2016-05-23 4 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プロンプトが生成されます。
  • イメージからコンテナを作成するときは、コマンドとして "bash"を渡すことなく、対話型コンテナに "-it"を指定するだけで済みます。
    docker run --net=host --name=debian-mysql -it ivanlmj/debian-7-mysql-5.7.12

および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