failed to get D-Bus connection: Operation not permitted
Use this command
docker run -d -it --privileged {Image ID} /usr/sbin/init
And access root in container
systemctl start httpd.service
This should work!
To elaborate on @Guido's answer, what worked for me was copying systemctl.py
from here and placing it in the same directory as my Dockerfile
, and then adding the following to my Dockerfile
:
COPY systemctl.py /usr/bin/systemctl
RUN chmod a+x /usr/bin/systemctl
E.g., this allowed me to start an sshd
service like so:
service sshd start
On Centos7 all the services are started and stopped throught the systemd daemon. The systemctl command will simply try to talk to the daemon by using a d-bus channel - and that's where the message comes from.
Instead of running a container in priviledged mode (so it is not really contained) you could also try out the docker-systemctl-replacement to avoid the situation.