Skip to main content

Failed to get D-Bus connection: Operation not permitted

"Failed to get D-Bus connection: Operation not permitted" - systemctl command is not working in Docker container. If systemctl command is not working in your container and giving subjected error message then simple solution of this error is, create container with --privileged option and also provide init file full path /usr/sbin/init
[root@server109 ~]# docker container run -dit --privileged --name systemctl_not_working_centos1 centos:7 /usr/sbin/init

For detailed explanation and understanding I am writing more about it, please have look below.
If we have a daemon based program(httpd, sshd, jenkins, docker etc.) running inside a container and we would like to start/stop or check status of daemon inside docker then it becomes difficult for us to perform such operations , because by default systemctl and service commands don't work inside docker. Normally we run below commands to check services status in Linux systems.
[root@server109 ~]# systemctl status jenkins.service
[root@server109 ~]# service jenkins status

While I have seen multiple times that when we run same command in docker container we get "Failed to get D-Bus connection: Operation not permitted" error message and this is very common error in container world. So here I am creating this error environment and after that I'll fix this error message.
[root@server109 ~]# docker image pull centos:7
[root@server109 ~]# docker container run -dit --name systemctl_not_working_centos centos:7
[root@server109 ~]# docker container exec -it systemctl_not_working_centos bash
[root@5e1838173ad7 /]# yum install httpd -y
[root@5e1838173ad7 /]# systemctl status httpd
Failed to get D-Bus connection: Operation not permitted
You don't have to do anything till here, I have just created error environment. So now we have this error message and mean of this error message is that systemctl command is not working in your container.
So whenever you create a container and if you think that there would some requirement of systemctl command in this container then you should run below command to create a container. I've just added --privileged keywork and also provided a file /usr/sbin/init(soft link of systemd). On high level and easy to understand, you can think like, because of this file only we have systemctl command in our system.

[root@server109 ~]# docker container run -dit --privileged --name systemctl_not_working_centos1 centos:7 /usr/sbin/init
[root@server109 ~]# docker container exec -it systemctl_not_working_centos1 bash
[root@084e47eeccc6 /]# yum install sudo wget -y
[root@084e47eeccc6 /]# sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
[root@084e47eeccc6 /]# sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
[root@084e47eeccc6 /]# yum install jenkins -y
[root@084e47eeccc6 /]# systemctl status jenkins
● jenkins.service - LSB: Jenkins Automation Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:systemd-sysv-generator(8)
[root@084e47eeccc6 /]#
[root@084e47eeccc6 /]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:httpd(8)
           man:apachectl(8)
Have a look on last two commands I can easily check status of httpd and jenkins. If required also can start/stop these services.

Comments

  1. on my ubuntu docker host, not working :(

    [root@608a1119d679 /]# systemctl status sshd
    Failed to get D-Bus connection: Operation not permitted
    [root@608a1119d679 /]#

    ReplyDelete
    Replies
    1. docker container run -dit --privileged --name /usr/sbin/init

      --privileded and by adding init path should fix this issue, as shown above.

      Delete

Post a Comment

Please share your experience.....

Popular posts from this blog

error: db5 error(11) from dbenv->open: Resource temporarily unavailable

If rpm command is not working in your system and it is giving an error message( error: db5 error(11) from dbenv->open: Resource temporarily unavailable ). What is the root cause of this issue? How to fix this issue?   just a single command- [root@localhost rpm]# rpm --rebuilddb Detailed error message- [root@localhost rpm]# rpm -q firefox ^Cerror: db5 error(11) from dbenv->open: Resource temporarily unavailable error: cannot open Packages index using db5 - Resource temporarily unavailable (11) error: cannot open Packages database in /var/lib/rpm ^Cerror: db5 error(11) from dbenv->open: Resource temporarily unavailable error: cannot open Packages database in /var/lib/rpm package firefox is not installed [root@localhost rpm]# RPM manage a database in which it store all information related to packages installed in our system. /var/lib/rpm, this is directory where this information is available. [root@localhost rpm]# cd /var/lib/rpm ...

Docker project

Since last few weekend I am learning Docker. A great initiative from Linux word under IIEC Rise and guidance of Vimal Daga. At the completion of this training I have implemented container technology and created my own monitoring system(Moatis). Project steps:- Pull centos:7 image I created a volume for persistent storage  Launched a container Exposed it to public Login into newly created centos container Deployed Nagios Setup monitoring on few hosts Tested if each and everything is working fine or not. Please check below for all the commands which I have executed to complete this project. Commands I have executed on Container Host -    176  podman container ls   177  podman container ls -a   178  podman image ls   179  podman volume create mymoatis   180  podman volume inspect mymoatis   181  cd /var/lib/containers/storage/mymoatis/_data/   182  ls   183  pod...