因此,這裏的情況,我有這個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'的服務器模擬服務器似乎沒有運行。 – Hasen
啊,也許它會退出,如果stdin不是一個tty或其他東西,它可能不應該這樣做。但對於大多數正確的網絡服務器而言,僅供參考,「nohup」不是必需的,不應在docker CMD行中使用。 –