Docker容器发布的端口无法访问?

Has*_*sen 3 containers docker

所以情况就是这样,我有一个使用这个dockerfile构建的容器:

FROM python:2-onbuild
EXPOSE 8888
CMD [ "nohup", "mock-server", "--dir=/usr/src/app", "&" ]
Run Code Online (Sandbox Code Playgroud)

我用这个命令运行它:

 docker build -t mock_server .
 docker run -d -p 8888:8888 --name mocky mock_server
Run Code Online (Sandbox Code Playgroud)

我在mac上使用它,所以boot2docker正在运行,我从8888上的boot2docker ip命中它.我尝试了boot2docker ssh并从那里击中了容器.我跑了docker exec -it mocky bashps aux表示:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.9 113316 18576 ?        Ss   15:16   0:00 /usr/local/bin/python2 /usr/local/bin/mock-server --dir=/usr/src/app &
root         5  1.6  0.1  21916  3440 ?        Ss   17:52   0:00 bash
root         9  0.0  0.1  19180  2404 ?        R+   17:53   0:00 ps aux
Run Code Online (Sandbox Code Playgroud)

当我发布它时:

curl -I -XGET localhost:8888/__manage
HTTP/1.1 200 OK
Content-Length: 183108
Set-Cookie: flash_msg_success=; expires=Thu, 04 Sep 2014 17:54:58 GMT; Path=/
Set-Cookie: flash_msg_error=; expires=Thu, 04 Sep 2014 17:54:58 GMT; Path=/
Server: TornadoServer/4.2.1
Etag: "efdb5b362491b8e4b8347b97ccafeca02db8d27d"
Date: Fri, 04 Sep 2015 17:54:58 GMT
Content-Type: text/html; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)

所以我的应用程序在容器内运行,但我无法从外部获取任何东西.这可以做什么?

Pet*_*ons 7

首先猜测是python程序显式绑定到127.0.0.1不允许任何远程连接的环回IP地址.检查那个python模拟龙卷风服务器的文档,--bind=0.0.0.0并进行相应的调整.

您可以通过执行docker exec并在容器中运行netstat -ntlp | grep 8888并查看绑定的IP 来确认是否是这种情况.如果是127.0.0.1,那就证实确实是问题所在.