为了账号安全,请及时绑定邮箱和手机立即绑定

未发布的端口

未发布的端口

Go
潇湘沐 2023-06-12 17:00:55
我有一个容器的配置(使用go-dockerclient https://github.com/fsouza/go-dockerclient),但它只在运行容器时打开 tcp 端口:...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"}},    },我尝试了各种可能的方法,但没有运气。当我使用 cmd 运行容器时,它按预期工作:docker run -d \    -p 0.0.0.0:1053:53/udp \    -p 0.0.0.0:1053:53/tcp ...任何想法我在这里做错了什么?容器检查输出:    "NetworkSettings": {        "Bridge": "",        "SandboxID": "4bdea4ccda50aaf8a3117098fdd2073943af43e8d991ddd7a0be425c5599dfbd",        "HairpinMode": false,        "LinkLocalIPv6Address": "",        "LinkLocalIPv6PrefixLen": 0,        "Ports": {            "53/tcp": [                {                    "HostIp": "0.0.0.0",                    "HostPort": "1053"                }            ]        },        "SandboxKey": "/var/run/docker/netns/4bdea4ccda50",        "SecondaryIPAddresses": null,        "SecondaryIPv6Addresses": null,        "EndpointID": "1796f8bda73d13d354bcd8bafaf6c1f4ff1491582c3985f6b653ccc6b2226e01",        "Gateway": "172.17.0.1",        "GlobalIPv6Address": "",        "GlobalIPv6PrefixLen": 0,        "IPAddress": "172.17.0.3",        "IPPrefixLen": 16,        "IPv6Gateway": "",        "MacAddress": "02:42:ac:11:00:03",        "Networks": {            "bridge": {                "IPAMConfig": null,                "Links": null,                "Aliases": null,                "NetworkID": "fb85e54ede4e18ae48e4c889d169d2d4cd8b2087a8c9691e094a431cb6a7eb43",                "EndpointID": "1796f8bda73d13d354bcd8bafaf6c1f4ff1491582c3985f6b653ccc6b2226e01",                "Gateway": "172.17.0.1",                "IPAddress": "172.17.0.3",                "IPPrefixLen": 16,                "IPv6Gateway": "",                "GlobalIPv6Address": "",                "GlobalIPv6PrefixLen": 0,                "MacAddress": "02:42:ac:11:00:03"            }        }    }
查看完整描述

1 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

我已经尝试了以下示例,它对我来说按预期工作,示例如下所示:

docker镜像链接: 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 中包含此内容。


查看完整回答
反对 回复 2023-06-12
  • 1 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信