2017-09-06 86 views
0

我想建立一個基於centos:systemd的碼頭圖像。在我Dockerfile我正在運行依賴於systemd運行一個命令,這個失敗,出現以下錯誤:碼頭建設如何運行與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運行?

如果我註釋掉安裝程序,只運行容器並手動執行安裝程序,它會正常工作。

這裏是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

如果你的安裝程序需要systemd運行,我想你會需要啓動一個容器與基礎centos/systemd圖像,手動運行命令,然後保存使用docker commit結果。基本鏡像ENTRYPOINTCMD不會在構建子圖像時運行,但如果您啓動容器並進行更改,它們會運行。在手動執行安裝程序後,運行docker commit {my_intermediate_container} {my_image}:{my_version},用容器名稱/散列,所需圖像名稱和映像版本替換花括號中的位。

在運行安裝程序之前,您可能還可以更改Dockerfile以啓動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通常在Docker容器之外進行的操作。

相關問題