2016-05-23 39 views
0

我想创建一个交互容器,但也要在后台运行一个守护进程。我已经建立了一个带有ENTRYPOINT(Dockerfile:ENTRYPOINT [“service”,“mysql”,“start”])的图像,并且通过这个图像,我创建了一个交互容器,但容器只是不启动..容器启动时的交互容器+守护进程

 
    $ docker create --net=host --name=debian-mysql -it ivanlmj/debian-7-mysql-5.7.12:latest bash 
    a66630403170f87ca7760a4609675708fa98abfe7e2b7b53a76a147f626aa733 

    $ docker ps --all -f "name=debian-mysql" 
    CONTAINER ID  IMAGE         COMMAND    CREATED    STATUS    PORTS    NAMES 
    a66630403170  ivanlmj/debian-7-mysql-5.7.12:latest "service mysql start 14 seconds ago            debian-mysql   

    $ docker start debian-mysql 
    debian-mysql 

    $ docker ps --all -f "name=debian-mysql" 
    CONTAINER ID  IMAGE         COMMAND    CREATED    STATUS        PORTS    NAMES 
    a66630403170  ivanlmj/debian-7-mysql-5.7.12:latest "service mysql start 27 seconds ago  Exited (0) Less than a second ago      debian-mysql 

什么是建立一个交互容器,也有一个守护进程在后台自动运行的正确方法是什么?

任何帮助,非常感谢。

在此先感谢你们!

回答

-1

经过几个小时的努力,我发现它!

的Dockerfile内部:

 
    FROM debian:jessie 
    MAINTAINER Ivan Leon ([email protected]) - @ivanleoncz 
    RUN ... 
    ... 
    ... 

    CMD service mysql start && bash 

  • 这最终声明,将通过Sys系统V init脚本或暴发户启动MySQL。
  • 如果守护程序启动成功(按位AND:& &),之后将生成BASH提示符。
  • 从图像创建容器时,只需要为交互式容器指定“-it”,而不传递“bash”作为命令。
    docker run --net=host --name=debian-mysql -it ivanlmj/debian-7-mysql-5.7.12

And DONE!

重要信息

 
CMD has two forms: with shell and without shell (JSON Array). 

If you use the shell form of the CMD, then the will execute 
in "/bin/sh -c" (it is the default Docker ENTRYPOINT). 

重要参考:https://docs.docker.com/engine/reference/builder/#cmd