【问题标题】:docker cannot start service from DockFiledocker 无法从 DockerFile 启动服务
【发布时间】:2014-10-25 04:35:25
【问题描述】:

在我的 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 运行服务的任何解决方法?

【问题讨论】:

    标签: unix build docker sudo boot2docker


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果您将 Dockerfile CMD 服务 myapp 启动,但随后运行您编译的镜像,将 service myapp 状态作为启动命令传递,您将覆盖 CMD 命令。所以你的启动命令没有被执行。如果您的 myapp 在启动时打印一些内容,请尝试这样做

      docker logs your_container_id
      

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

      【讨论】:

        【解决方案3】:

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

        你可以在前台启动你的服务器,或者运行一个在后台启动服务器的命令(可能还有更多的事情)并继续做更多的事情,即在前台监控或监督以在服务器结束时重新启动服务器。

        【讨论】:

          猜你喜欢
          • 2018-01-13
          • 2018-04-20
          • 1970-01-01
          • 2020-06-30
          • 2017-04-16
          • 2018-12-16
          • 2023-01-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多