Docker在启动时退出CMD
我有一个运行游戏 Web应用程序的docker图像。 在dockerfile中有CMD启动服务器,它等待,直到你按Ctrl + D退出。 如果我做:
docker run -d -i -v
它工作正常 – 启动服务器并等待ctrl + D。
但是,当我启动容器时,情况并非如此:
docker start -i
相反,服务器自动停止:
--- (Running the application, auto-reloading is enabled) --- [info] pcsNettyServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000 (Server started, use Ctrl+D to stop and go back to the console...) [success] Total time: 1 s, completed Jul 27, 2016 11:54:13 AM <--- this indicates that the server was stopped.
我怎样才能强迫docker开始不停止服务器?
docker容器在其主进程完成时退出。 没有洞察你的docker文件(我没有玩游戏框架的经验),你需要确保至less有一个进程保持活着。
你有几个select:
- Docker方式
尝试使用-it
像docker run -it <your framework image> bash
进入你开始的容器。 这应该保持您的窗口打开,并允许您在容器中运行命令。 - Docker“debugging”的方式
尝试使用docker inspect <your container>
(使用docker ps -a
来查找您的容器)命令来调查容器退出的原因。 如果你有像start.sh这样的启动脚本,你可以尝试添加while true; do sleep 1000;
while true; do sleep 1000;
这样做是为了在容器退出之前保持容器调查的function。 - 尝试使用已发布的docker图像之一 – https://hub.docker.com/r/ingensi/play-framework/
PS我不能放弃你是新来的docker工人的感觉,并正在混合docker start
和docker run
命令。