我有一个容器的配置(使用Comparable
https://github.com/fsouza/go-dockerclient),但是它只在运行容器时打开tcp端口:
go-dockerclient
我尝试了所有可能没有运气的方法。当我使用cmd运行容器时,它可以按预期工作:
...
StartConfig: docker.HostConfig{
PortBindings: map[docker.Port][]docker.PortBinding{
"53/tcp": {{HostIP: "0.0.0.0", HostPort: "1053"}},
"53/udp": {{HostIP: "0.0.0.0", HostPort: "1053"}},
},
有什么想法我在这里做错了吗?
容器检查输出:
docker run -d \
-p 0.0.0.0:1053:53/udp \
-p 0.0.0.0:1053:53/tcp ...
答案 0 :(得分:1)
我尝试了下面的示例,该示例对我来说很正常,如下所示:
泊坞窗图片链接:https://github.com/sameersbn/docker-bind
问题可能与您拥有的图像有关?
package main
import (
docker "github.com/fsouza/go-dockerclient"
)
func main() {
endpoint := "unix:///var/run/docker.sock"
client, err := docker.NewClient(endpoint)
if err != nil {
panic(err)
}
container, err := client.CreateContainer(docker.CreateContainerOptions{
Name: "my-container",
Config: &docker.Config{Image: "sameersbn/bind:9.11.3-20190113"},
HostConfig: &docker.HostConfig{
PortBindings: map[docker.Port][]docker.PortBinding{
"53/tcp": {{HostIP: "0.0.0.0", HostPort: "1053"}},
"53/udp": {{HostIP: "0.0.0.0", HostPort: "1053"}},
},
},
},
)
client.StartContainer(container.ID, nil)
}
Docker检查结果:
"Ports": {
"10000/tcp": null,
"53/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "1053"
}
],
"53/udp": [
{
"HostIp": "0.0.0.0",
"HostPort": "1053"
}
]
},
请确保您在Dockerfile中包含此文件,默认情况下,EXPOSE
假定TCP
如here中所述:
EXPOSE 53/udp 53/tcp