Docker端口转发不起作用

新手上路,请多包涵

我已经设置了 Docker 容器,以便将我的机器 docker 容器访问到本地的另一台机器。

在命令下面创建一个容器:

     docker run -it -d --name containerName -h www.myhost.net -v /var/www/html -p 7000:8000 --net mynetwork --ip 172.11.0.10 --privileged myimagename bash

创建容器详细信息后:

         CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES

        1e1e5e9b74b4        myimgaename         "bash"              21 minutes ago      Up 6 minutes        0.0.0.0:7000->8000/tcp   containername

网络详情:

      "NetworkSettings": {
        "Bridge": "",
        "SandboxID": "fe357c54c816fff0f9d642037dc9a173be7f7e42a80776d006572f6a1395969e",
        "HairpinMode": false,
        "LinkLocalIPv6Address": "",
        "LinkLocalIPv6PrefixLen": 0,
        "Ports": {
            "8000/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "7000"
                }
            ]
        }

如果我在 mymachine(hostmachine) 中访问 docker ipaddr(172.11.0.10) 或主机名(www.myhost.net) 它工作

但是,如果我使用 端口 访问不起作用:hostmachine ip: 192.168.1.1

   go to the browser  192.168.1.1:7000  hostmachine and locally connected anoter machine also.

但我的 7000 端口在主机中监听:

         # ps aux | grep 7000
        root     10437  0.0  0.2 194792 24572 pts/0    Sl+  12:33   0:00 docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 7000 -container-ip 172.11.0.10 -container-port 8000
        root     10941  0.0  0.0 118492  2324 pts/3    R+   12:44   0:00 grep --color=auto 7000

更新1:

       $ docker version
        Client:
         Version:      1.11.2
         API version:  1.23
         Go version:   go1.5.4
         Git commit:   b9f10c9
         Built:        Wed Jun  1 21:39:21 2016
         OS/Arch:      linux/amd64

        Server:
         Version:      1.11.2
         API version:  1.23
         Go version:   go1.5.4
         Git commit:   b9f10c9
         Built:        Wed Jun  1 21:39:21 2016
         OS/Arch:      linux/amd64

建议我为什么无法将我的容器访问到另一台机器。如何解决这个问题

原文由 Rajkumar .E 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 719
1 个回答

一个非常常见的问题可能是这样的:

将 Docker 内的 应用程序 绑定到 0.0.0.0 ,而不是 127.0.0.1 地址,让 Docker 访问容器内的应用程序。

UPD:不要试图用 docker 来解决它。 没有 docker 命令 可以解决这个问题。它严格取决于使用的应用程序、Web 框架等。请阅读您在容器内使用的工具的手册。尝试谷歌“如何将 [使用框架] 绑定到特定地址和端口”。它可以是环境变量、cli 参数、代码等。

原文由 DenisKolodin 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题