2016-05-28 43 views
5

DockerfileOperazione non consentita systemctl con finestra mobile + 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 

finestra mobile-compose.yml

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

comando

docker-compose build 

errore:

Passo 6: RUN systemctl iniziare httpd.service ---> Running in 5989c6576ac9 [91mFailed per ottenere il collegamento D-Bus: Operation not permitted [0m [31mERROR [0m???: Servizio 'web' non è riuscito a costruire: Il comando '/ bin/sh -c syste mctl Iniziamo httpd.service' restituito un codice diverso da zero: 1

Obs: in esecuzione su un Windows 7 :(

Qualche consiglio?

+1

Hai trovato una soluzione per questo problema? Ho provato la risposta ma non funziona per me nemmeno l'immagine centos/systemd –

+0

la risposta funziona per voi? per il mio non funziona –

risposta

1

Come spiegato in centos docker image repository, Systemd non è attivo per impostazione predefinita. Per poter utilizzare systemd, è necessario includere il testo simile all'esempio Dockerfile di seguito:

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

Questo Dockerfile elimina un certo numero di file di unità che potrebbero causare problemi. Da qui, sei pronto per costruire la tua immagine di base.

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

Per poter utilizzare il contenitore di base abilitato systemd creato in precedenza, è necessario modificare il Dockerfile a:

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

Questo non ha funzionato per me, ho ancora la stessa operazione errore non consentito proprio quando si costruisce l'immagine finestra mobile –

+0

Questo non funziona. –

+0

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

1

Per lo stesso problema ho creato una docker-systemctl-replacement che farà i passi che "systemctl start httpd.service" farebbe ... ma senza la necessità di un SystemD in esecuzione. Basta dire "systemctl.py start httpd.service" e vedere se funziona.

Problemi correlati