2016-05-28 16 views
5

DockerfileOperasyonu 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 

liman işçisi-compose.yml

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

komut ile systemctl izin verilmez

docker-compose build 

hata:

Adım 6:? RUN [91mFailed 5989c6576ac9 yılında Koşu httpd.service ---> başlatmak systemctl D-Bus bağlantısı almak için: izin verilmez Operasyonu [0m [31mERROR [0m??: komutu '/ bin/ httpd.service başlatmak mctl sh -c siste' sıfır olmayan bir kodu döndürdü: 1

gözl: Hizmet 'web' inşa etmek başarısız bir pencere üzerinde çalışan 7 :(

Herhangi bir ipucu?

+1

Bu sorun için bir çözüm buldunuz mu? Cevabı denedim ama benim için çalışmıyor centos/systemd image –

+0

cevabı sizin için işe yaramıyor mu? benim için işe yaramıyor –

cevap

1

centos docker image repository'de açıklandığı gibi, Systemd varsayılan olarak etkin değildir. systemd kullanmak için, aşağıdaki Dockerfile örneğe benzer bir metin eklemeleri gerekir:

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"] 

Bu Dockerfile sorunlara neden olabilecek birim dosyaları bir dizi siler. Buradan, temel resminizi oluşturmaya hazırsınız. Yukarıda oluşturulan systemd etkin taban kabı kullanmak için

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

, Size Dockerfile değiştirmeniz gerekecektir: adımları yapacak bir docker-systemctl-replacement yarattık aynı konu için

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

Bu benim için işe yaramadı, yine de aynı işlem yapmasına izin vermiyorum docker görüntüyü oluştururken hata doğru değil –

+0

Bu işe yaramıyor. –

+0

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

1

o "systemctl start httpd.service" yapardı ... ama çalışan bir SystemD'ye gerek kalmadan. Sadece "systemctl.py start httpd.service" deyin ve bunun işe yarayıp yaramadığını görün.