我正在尝试使用可从 github.com/docker/docker/client 获得的 docker API for golang。到目前为止,我能够在构建映像期间预定义的端口上启动容器。我正在尝试在运行时使用 API 映射端口;相当于
docker run -p 8083:8082 -d myImage:1.0.0
我尝试执行以下操作来映射端口:
host_config := &container.HostConfig{
PortBindings: nat.PortMap{
"8082/tcp": []nat.PortBinding{
{
HostIP: "0.0.0.0",
HostPort: "8983",
},
},
},
}
这里的问题是变量“nat”位于 API 的供应商文件夹中。我无法直接从 go vendor 文件夹中导入某些内容。stackoverflow 上有人建议将 go-connection 文件夹复制到 github 文件夹中,并删除嵌套的 vendor 目录。我按照建议做了,并创建了如下路径:
"github.com/docker/go-connections/nat"
现在我在编译时收到以下错误:
src\main\createcontainer1.go:53: cannot use "github.com/docker/go-connections/nat".PortSet literal (type "github.com/docker/go-connections/nat".PortSet) as type "github.com/docker/docker/vendor/github.com/docker/go-connections/nat".PortSet in field value
src\main\createcontainer1.go:65: cannot use "github.com/docker/go-connections/nat".PortMap literal (type "github.com/docker/go-connections/nat".PortMap) as type "github.com/docker/docker/vendor/github.com/docker/go-connections/nat".PortMap in field value
有没有人遇到过这个问题并克服了它?我正在使用 Go 版本 1.8。