【发布时间】:2015-09-04 17:58:02
【问题描述】:
所以情况是这样,我有一个使用这个 dockerfile 构建的容器运行:
FROM python:2-onbuild
EXPOSE 8888
CMD [ "nohup", "mock-server", "--dir=/usr/src/app", "&" ]
我用这个命令运行它:
docker build -t mock_server .
docker run -d -p 8888:8888 --name mocky mock_server
我在 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
当我卷曲它时:
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
所以我的应用程序在容器内运行,但我无法从它外面得到任何东西。在这里可以做什么?
【问题讨论】:
-
旁白:在你的 Dockerfile CMD 行中不需要
nohup。 -
@PeterLyons 如果我不做类似
nohup的操作,服务器模拟服务器似乎没有运行。 -
啊,如果 stdin 不是 tty 或其他东西,它可能会退出,它可能不应该这样做。但对于大多数合适的网络服务器来说,仅供参考,
nohup不是必需的,也不应该在 dockerCMD行中使用。
标签: docker containers