Golang Docker SDK v1.42 - 修改 Docker 容器的 HostConfig 配置
使用 Golang Docker SDK v1.42 版本修改 Docker 容器的 HostConfig 配置的步骤如下:
- 导入 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"
)
- 创建 Docker 客户端
cli, err := client.NewClientWithOpts(client.WithVersion("1.42"))
if err != nil {
panic(err)
}
- 定义容器配置
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{}
- 创建容器
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)
}
完整代码示例:
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)
}
}
原文地址: https://www.cveoy.top/t/topic/kU0J 著作权归作者所有。请勿转载和采集!