端口未发布

时间:2019-03-09 17:39:01

标签: docker go

我有一个容器的配置(使用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 ...

1 个答案:

答案 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假定TCPhere中所述:

EXPOSE 53/udp 53/tcp