2017-09-06 3 views
0

centos:systemdに基づくドッカー画像を構築しようとしています。私のDockerfileでは、私は、これは次のエラーで失敗し、systemdにランニングに依存コマンドを実行しています:dockerはcentosで中間コンテナを実行する方法を構築します:systemd

Failed to get D-Bus connection: Operation not permitted 
error: %pre(mod-php-7.1-apache2-zend-server-7.1.7-16.x86_64) scriptlet failed, exit status 1 
Error in PREIN scriptlet in rpm package mod-php-7.1-apache2-zend-server-7.1.7-16.x86_64 

は、どのように私は--privilegedとマッピング-v /sys/fs/cgroup:/sys/fs/cgroup:roで実行する中間コンテナを得ることができますか?

私がインストーラをコメントアウトしてコンテナを実行し、手動でインストーラを実行するとうまくいきます。あなたのインストーラがsystemdランニングを必要とする場合

はここDockerfile

FROM centos/systemd 
COPY ./ZendServer-9.1.0-RepositoryInstaller-linux.tar.gz /opt 
RUN tar -xvf /opt/ZendServer-9.1.0-RepositoryInstaller-linux.tar.gz -C /opt/ 
RUN /opt/ZendServer-RepositoryInstaller-linux/install_zs.sh 7.1 java --automatic 

答えて

0

で、私は手動で、ベースcentos/systemd画像でコンテナを起動するコマンドを実行し、docker commitを使用して結果を保存する必要がありますだと思います。基本イメージENTRYPOINTCMDは、子イメージの作成中は実行されませんが、コンテナを起動して変更を加えた場合に実行されます。インストーラを手動で実行した後、docker commit {my_intermediate_container} {my_image}:{my_version}を実行し、中括弧内のビットをコンテナ名/ハッシュ、必要なイメージ名、イメージバージョンに置き換えます。

インストーラを実行する前にDockerファイルを変更してinitを起動することもできます。私はそれがイメージを構築する文脈でここに動作するかどうかわからないのですが、それは次のようになります。

FROM centos/systemd 
COPY ./ZendServer-9.1.0-RepositoryInstaller-linux.tar.gz /opt 
RUN tar -xvf /opt/ZendServer-9.1.0-RepositoryInstaller-linux.tar.gz -C /opt/ \ 
    && /usr/sbin/init \ 
    && /opt/ZendServer-RepositoryInstaller-linux/install_zs.sh 7.1 java --automatic 
+0

ありがとう@wmorrellは、手動でコミットするのを忘れてしまいました。これを自動化する方法がわかるまで、良い回避策になるかもしれません。 –

+0

手動でinitを開始しようとすると、同じD-Busエラーが発生する –

0

ドッカ容器内LAMPスタックがsystemdには必要ありません - 私はdocker-systemctl-replacement scriptで動作するようになりました。 * .serviceファイルに書き込まれた内容に従ってサービスを開始および停止することができます。 ZendServerがドッカーコンテナの外で通常行っていることを試すことができます。

関連する問題