2016-05-28 7 views
5

Dockerfile動作ドッカー+ systemctl

FROM centos:7 
ENV container docker 
VOLUME ["/sys/fs/cgroup"] 
RUN yum -y update 
RUN yum install -y httpd 
RUN systemctl start httpd.service 
ADD . /code 
WORKDIR /code 

ドッカー-compose.yml

version: '2' 
services: 
web: 
    privileged: true 
    build: . 
    ports: 
    - "80:80" 
    volumes: 
    - .:/code 

コマンドでsystemctlを許可されていない

docker-compose build 

エラー

ステップ6:??操作が [0メートルを許可されていない[31mERROR [0メートル:??RUNはhttpd.service ---> 5989c6576ac9 での実行[91mFailed D-バス接続を取得するために開始しsystemctl:コマンド '/ binに/ はhttpd.serviceを開始MCTLのsh -c syste' 非ゼロのコードが返さ:1台の

OBSを:サービス 'ウェブ' はビルドに失敗したWindows上で実行されている7 :(

チップはありますか?

+1

この問題の解決策をお探しですか?私は答えを試みたが、私は私のために働かないcentos/systemdイメージ –

+0

答えはあなたのために働くか?私のためにそれは動作していません –

答えて

1

centos docker image repositoryで説明されているように、Systemdはデフォルトではアクティブではありません。 systemdにを使用するには、以下のDockerfileの例のようにテキストを含める必要があります。

FROM centos:7 
MAINTAINER "you" <[email protected]> 
ENV container docker 
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \ 
rm -f /lib/systemd/system/multi-user.target.wants/*;\ 
rm -f /etc/systemd/system/*.wants/*;\ 
rm -f /lib/systemd/system/local-fs.target.wants/*; \ 
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ 
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ 
rm -f /lib/systemd/system/basic.target.wants/*;\ 
rm -f /lib/systemd/system/anaconda.target.wants/*; 
VOLUME [ "/sys/fs/cgroup" ] 
CMD ["/usr/sbin/init"] 

このDockerfileは、問題を引き起こす可能性があるユニットファイルの数を削除します。ここから、ベースイメージを作成する準備が整いました。

$ docker build --rm -t local/c7-systemd . 

上記作成にsystemd有効ベースコンテナを使用するためには、にごDockerfileを変更する必要があります:私はその手順を行いますdocker-systemctl-replacementを作成している同じ問題について

FROM local/c7-systemd 
ENV container docker 
VOLUME ["/sys/fs/cgroup"] 
RUN yum -y update 
RUN yum install -y httpd 
RUN systemctl start httpd.service 
ADD . /code 
WORKDIR /code 
+0

これは私のためにはうまくいかなかった、私はドッカーの画像を構築するときに正しく同じエラーが許可されないエラーを受け取ります –

+0

これは動作しません。 –

+0

https://hub.docker.com/_/centos/ –

1

"systemctl start httpd.service"は実行しますが、実行中のSystemDは必要ありません。単に "systemctl.py start httpd.service"と言って、それが動作するかどうかを確認してください。

関連する問題