所以情况就是这样,我有一个使用这个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 bash并ps 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)
所以我的应用程序在容器内运行,但我无法从外部获取任何东西.这可以做什么?
首先猜测是python程序显式绑定到127.0.0.1不允许任何远程连接的环回IP地址.检查那个python模拟龙卷风服务器的文档,--bind=0.0.0.0并进行相应的调整.
您可以通过执行docker exec并在容器中运行netstat -ntlp | grep 8888并查看绑定的IP 来确认是否是这种情况.如果是127.0.0.1,那就证实确实是问题所在.
| 归档时间: |
|
| 查看次数: |
6987 次 |
| 最近记录: |