Unix docker无法从DockFile启动服务

Unix docker无法从DockFile启动服务,unix,build,docker,sudo,boot2docker,Unix,Build,Docker,Sudo,Boot2docker,在我的dockerFile中 我试着去做 service myapp start; 但当我启动容器时: docker run -it myapp_image service myapp status >dead but pid file exists 但是,如果我进入conainer,并手动启动它,它就会毫无问题地运行 docker run -it myapp_image /bin/bash bash-3.2$ service myapp restart bash-3.2$ s

在我的dockerFile中

我试着去做

service myapp start;
但当我启动容器时:

docker run -it myapp_image service myapp status 
>dead but pid file exists
但是,如果我进入conainer,并手动启动它,它就会毫无问题地运行

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

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

如果您将DockerFile CMD service myapp start放入,但随后运行使用它编译的映像,并将service myapp status作为start命令传递,则会覆盖CMD命令。因此,您的start命令不会执行。如果你在myapp启动时打印某些内容,请尝试执行以下操作

docker logs your_container_id

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

如果您将Dockerfile CMD服务放入myapp start,但随后运行使用它编译的映像,并将服务myapp status作为start命令传递,则会覆盖CMD命令。因此,您的start命令不会执行。如果你在myapp启动时打印某些内容,请尝试执行以下操作

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

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

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

service myapp start将在后台作为服务启动您的应用程序。一旦此命令存在,docker容器将停止。这是Docker容器的预期行为


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

只要您将命令作为docker run的参数传递,即只要服务程序正在运行,容器就会有效


您可以在前台启动服务器,或者运行一个命令,在后台启动服务器,或者运行更多的东西,并继续做更多的事情,即在前台运行monit或supervisord,以便在服务器结束时重新启动服务器。

只要您将命令作为docker run的参数传递,容器就会一直运行,即只要服务程序正在运行

您可以在前台启动服务器,或者运行一个命令,在后台启动服务器,可能还有更多的事情,并继续做更多的事情,即在前台运行monit或supervisord,以便在服务器结束时重新启动服务器