8

Dockerfile

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

docker-compose.yml

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

指図

docker-compose build

エラー:

ステップ 6 : RUN systemctl start httpd.service ---> Running in 5989c6576ac9 ?[91mD-Bus 接続の取得に失敗しました: 操作は許可されていません ?[0m?[31mERROR?[0m: サービス 'web' の構築に失敗しました: コマンド ' /bin/sh -c syste mctl start httpd.service' がゼロ以外のコードを返しました: 1

Obs:Windows 7で実行しています:(

ヒントはありますか?

4

2 に答える 2

4

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

FROM centos:7
MAINTAINER "you" <your@email.here>
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 を次のように変更する必要があります。

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
于 2016-05-28T20:56:16.320 に答える