2016-05-23 41 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