docker无法从DockerFile启动服务

时间:2014-10-25 04:35:25

标签: unix build docker sudo boot2docker

在我的dockerFile中,

我试着做

service myapp start;

但是当我启动容器时:

docker run -it myapp_image service myapp status 
>dead but pid file exists

但是,如果我进入该变速器并手动启动它,它就可以顺利运行

 docker run -it myapp_image /bin/bash
 bash-3.2$ service myapp restart
 bash-3.2$ service myapp status
        > myapp is running.

从DockerFile运行服务的任何解决方法?

3 个答案:

答案 0 :(得分:2)

service myapp start会在后台启动您的应用作为服务。只要此命令存在,docker容器就会停止。这是Docker容器的预期行为。

您要做的是让CMD指令在前台而不是在后台启动您的应用。

答案 1 :(得分:1)

如果您将Dockerfile CMD服务myapp启动,但随后运行您编译的映像,并将服务myapp状态作为启动命令,则覆盖CMD命令。所以你的启动命令没有被执行。如果myapp在启动时打印出来,请尝试

docker logs your_container_id

查看是否有您期望的输出。或者将启动myapp的脚本作为启动命令,然后查询其状态。然后,使用logs命令,您可以查看它是否正在运行。

答案 2 :(得分:1)

只要作为docker run参数传递的命令,即只要“服务”程序运行,容器就会存在。

您可以在前台启动服务器,或者运行在后台启动服务器的命令(可能还有更多内容),并继续生活做更多的事情,例如monit或supervisord在前台重新启动服务器(如果它结束)。 / p>

相关问题