【问题标题】:Docker exits CMD on startDocker 在启动时退出 CMD
【发布时间】:2016-07-27 21:30:52
【问题描述】:

我有一个运行 play Web 应用程序的 docker 映像。在 dockerfile 中有启动服务器的 CMD,它会一直等到您按 Ctrl+D 退出。如果我这样做:

docker run -d  -i -v

它工作正常 - 启动服务器并等待 ctrl+D。

然而,当我启动容器时,情况并非如此:

docker start -i

服务器会自动停止:

--- (Running the application, auto-reloading is enabled) ---

[info] p.c.s.NettyServer - 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 start 不停止服务器?

【问题讨论】:

    标签: docker playframework


    【解决方案1】:

    一个 docker 容器在其主进程完成时退出。如果不了解您的 docker 文件(我对 play 框架没有经验),您需要确保至少有一个进程保持活动状态。

    你有几个选择:

    • Docker 方式
      尝试使用-itdocker run -it &lt;your framework image&gt; bash 进入您正在启动的容器。这应该让您的窗口保持打开状态,并允许您在容器中运行命令。
    • Docker“调试”方式
      尝试使用docker inspect &lt;your container&gt;(使用docker ps -a 查找您的容器)命令来调查容器退出的原因。如果您有 start.sh 之类的启动脚本,您可以尝试添加 while true; do sleep 1000; done 以保持容器在退出之前调查它在做什么。
    • 尝试使用已发布的 docker 图像之一,例如 - https://hub.docker.com/r/ingensi/play-framework/

    附:我不能忘记您是 docker 新手并且正在混合使用 docker startdocker run 命令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-12
      • 2023-03-12
      • 1970-01-01
      • 2022-12-22
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 2020-01-23
      相关资源
      最近更新 更多