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方式
    尝试使用-itdocker 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 startdocker run命令。