使用 Golang Docker SDK v1.42 版本修改 Docker 容器的 HostConfig 配置的步骤如下:

  1. 导入 Docker SDK 包
import (
    "context"
    "github.com/docker/docker/api/types/container"
    "github.com/docker/docker/api/types/mount"
    "github.com/docker/docker/api/types/network"
    "github.com/docker/docker/client"
)
  1. 创建 Docker 客户端
cli, err := client.NewClientWithOpts(client.WithVersion("1.42"))
if err != nil {
    panic(err)
}
  1. 定义容器配置
ctx := context.Background()
config := &container.Config{
    Image: "nginx:latest",
}
hostConfig := &container.HostConfig{
    Mounts: []mount.Mount{
        {
            Type:   mount.TypeBind,
            Source: "/path/on/host",
            Target: "/path/on/container",
        },
    },
}
networkConfig := &network.NetworkingConfig{}
  1. 创建容器
resp, err := cli.ContainerCreate(ctx, config, hostConfig, networkConfig, "my-nginx")
if err != nil {
    panic(err)
}
  1. 启动容器
if err := cli.ContainerStart(ctx, resp.ID, types.ContainerStartOptions{}); err != nil {
    panic(err)
}
  1. 修改容器的 HostConfig 配置
if err := cli.ContainerUpdate(ctx, resp.ID, container.UpdateConfig{
    HostConfig: hostConfig,
}); err != nil {
    panic(err)
}

完整代码示例:

package main

import (
    "context"
    "github.com/docker/docker/api/types/container"
    "github.com/docker/docker/api/types/mount"
    "github.com/docker/docker/api/types/network"
    "github.com/docker/docker/client"
    "github.com/docker/docker/api/types"
)

func main() {
    ctx := context.Background()

    cli, err := client.NewClientWithOpts(client.WithVersion("1.42"))
    if err != nil {
        panic(err)
    }

    config := &container.Config{
        Image: "nginx:latest",
    }
    hostConfig := &container.HostConfig{
        Mounts: []mount.Mount{
            {
                Type:   mount.TypeBind,
                Source: "/path/on/host",
                Target: "/path/on/container",
            },
        },
    }
    networkConfig := &network.NetworkingConfig{}

    resp, err := cli.ContainerCreate(ctx, config, hostConfig, networkConfig, "my-nginx")
    if err != nil {
        panic(err)
    }

    if err := cli.ContainerStart(ctx, resp.ID, types.ContainerStartOptions{}); err != nil {
        panic(err)
    }

    // 修改 HostConfig 配置
    if err := cli.ContainerUpdate(ctx, resp.ID, container.UpdateConfig{
        HostConfig: hostConfig,
    }); err != nil {
        panic(err)
    }
}
Golang Docker SDK v1.42 - 修改 Docker 容器的 HostConfig 配置

原文地址: https://www.cveoy.top/t/topic/kU0J 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录