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.