在 Go Docker SDK 中,可以通过使用'container.HostConfig'字段来修改容器的 HostConfig。以下是一个示例:

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

func main() {
    cli, err := client.NewClientWithOpts(client.FromEnv)
    if err != nil {
        panic(err)
    }

    // 创建一个容器
    resp, err := cli.ContainerCreate(context.Background(), &container.Config{
        Image: "nginx",
    }, &container.HostConfig{
        PortBindings: nat.PortMap{
            "80/tcp": []nat.PortBinding{
                {
                    HostIP:   "0.0.0.0",
                    HostPort: "8080",
                },
            },
        },
    }, nil, "")
    if err != nil {
        panic(err)
    }

    // 启动容器
    if err := cli.ContainerStart(context.Background(), resp.ID, types.ContainerStartOptions{}); err != nil {
        panic(err)
    }

    // 修改容器的 HostConfig
    hostConfig := &container.HostConfig{
        PortBindings: nat.PortMap{
            "80/tcp": []nat.PortBinding{
                {
                    HostIP:   "0.0.0.0",
                    HostPort: "8081",
                },
            },
        },
    }
    if err := cli.ContainerUpdate(context.Background(), resp.ID, container.UpdateConfig{
        HostConfig: hostConfig,
    }); err != nil {
        panic(err)
    }
}

在这个示例中,我们首先创建了一个 Nginx 容器,并将其绑定到本地端口 8080。然后,我们使用'ContainerUpdate'方法来修改容器的 HostConfig,将其绑定到本地端口 8081。

Golang Docker SDK 中修改容器 HostConfig 的方法

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

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