2016-07-11 7 views
0

私は認証局のためのパペットコンテナを作成しました。それは動作しますが、正しく起動しません。ここに私のDockerfileです:パペットコンテナは自動的に起動しません

FROM centos:6 
RUN yum update -y 
RUN rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm 
RUN yum install -y ruby puppet-server 
ADD puppet.conf /etc/puppet/puppet.conf 

VOLUME ["/var/lib/puppet/ssl/"] 
EXPOSE 9140 

#NOTHING BELOW THIS COMMENT RUNS 
RUN puppet master --verbose 

CMD service puppetmaster start 
CMD chkconfig puppetmaster on 
CMD [] 

私は、(私は画像CA-人形を命名することに注意してください)次の実行でコンテナを起動することができます

docker run -d -p 9140:9140 -it --name ca-puppet \ 
-v /puppet-host/ssl:/var/lib/puppet/ssl \ 
ca-puppet bash 

問題は私がにdocker execする必要があることですコンテナとそれを始めるとそのSSLディレクトリにCA証明書を作成するには、次のコマンドを実行します。

​​

私はいくつかの他のドッカーファイルを使用する必要があります感じています最後の3つのコマンドを実行するコマンド。それは何でしょうか?

答えて

1

Dockerfileには1つのCMD命令しか存在できません。 複数のCMDをリストすると、最後のCMDだけが有効になります。

ユーザーは、その後、彼らはCMDで指定 デフォルトを上書きします実行をドッカーする引数を指定した場合。

しかし、(変更の多くをせずに)問題が発生する可能性が最も主流のディストリビューション用ドッカーのデフォルトのプロセスマネージャ(例えば、SysVの、systemdに、など)を使用。ただし、通常は1つのアプリケーションのみを実行している場合(通常はベストプラクティスとみなされます)、一般的にはその必要はありません。 Dockerコンテナでは、通常、プライマリアプリケーションを最初のプロセス(PID 1)にします。

あなたがいないdaemonizing人形でこれを行うとのようなものを経由して、デフォルトのコンテナコマンドとして、それを起動することができます。

CMD puppet master --verbose --no-daemonize

そして(restart政策などを経由して)、それを管理するために、ドッカーホストを使用します。

関連する問題