2016-05-28 14 views
5

DockerfileOperation không được phép systemctl với Docker + 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 

Docker-compose.yml

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

lệnh

docker-compose build 

lỗi:

Bước 6: RUN systemctl bắt đầu httpd.service ---> Chạy trong 5989c6576ac9 [91mFailed để kết nối D-Bus: Hoạt động không được phép [0m [31mERROR [0m??: dịch vụ 'web' thất bại trong việc xây dựng: lệnh '/ bin/sh -c syste mctl bắt đầu httpd.service' trở lại một mã khác không: 1

Obs: chạy trên một cửa sổ 7 :(

Mẹo nào?

+1

Bạn đã tìm thấy giải pháp cho vấn đề này chưa? Tôi đã thử câu trả lời nhưng tôi không làm việc cho tôi ngay cả những centos/systemd hình ảnh –

+0

hiện câu trả lời làm việc cho bạn? cho tôi nó không hoạt động –

Trả lời

1

Như được giải thích trong centos docker image repository, Systemd không hoạt động theo mặc định. Để sử dụng systemd, bạn sẽ cần phải bao gồm văn bản tương tự như ví dụ Dockerfile bên dưới:

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 này xóa một số tệp đơn vị có thể gây ra sự cố. Từ đây, bạn đã sẵn sàng để xây dựng hình ảnh cơ sở của mình.

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

Để sử dụng systemd chứa kích hoạt cơ sở tạo ở trên, bạn sẽ cần phải thay đổi Dockerfile của bạn để:

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

Điều này đã không làm việc cho tôi, tôi vẫn nhận được cùng một hoạt động không được phép lỗi ngay khi xây dựng hình ảnh docker –

+0

Điều này không hoạt động. –

+0

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

1

Đối với cùng một vấn đề tôi đã tạo ra một docker-systemctl-replacement mà sẽ làm các bước "systemctl start httpd.service" sẽ thực hiện ... nhưng không cần chạy SystemD. Chỉ cần nói "systemctl.py start httpd.service" và xem liệu nó có hoạt động hay không.

Các vấn đề liên quan