Linux下Docker容器使用systemctl命令出现"Failed to get D-Bus connection: Operation not permitted"错误

编者在使用Docker容器部署服务的时候,用的是CentOS的的的镜像,所以在这里就以CentOS的的的为例。

刚开始,编者在制作的Apache服务多克尔容器时,发现在使用systemctl命令启动服务时,就会出现错误。

[-> ~ Scong ] docker exec -it s1k3b3jwj4 bash
[-> ~ Scong ] yum -y install httpd
[-> ~ Scong ] systemctl start httpd
    Failed to get D-Bus connection: Operation not permitted

在网上也是有许多的方法,可能每个人的做法不一,但是都能解决所遇到问题。

如果我们从Docker容器的概念去理解,或许就会知道,其实多克尔一个就是独立的主进程,的英文服务在容器内所运行的。但是的英文它不请立即获取iTunes服务在后台运行服务的。所以如果我们想使用就要需要将泊坞窗内的服务在前台运行

百度百科我们可以得知,Docker并不是一个完整的系统,它只是一个附加系统,使用文件系统来进行不同层的构建。这也就意味着如果我们需要启动服务,我们就需要授权给docker容器。这样一来,我们才可以让容器内的服务在前台运行。

在看看网上的一些解决方法以及对码器容器的了解。于是编者就在命令行寻找docker run的“ - help”帮助,然后发现确实有许多的参数,在接近末端发现一个参数

[-> ~ Scong ] docker run --help
    ... ...
     --privileged     Give extended privileges to this container
    ... ...

意思就是:“ - 享有特权的将扩展权限授予此容器”,这样一来解决的办法就出来了,在启动容器的时候加上这个选项参数即可!

[-> ~ Scong ] docker run --privileged -itd -e "container=docker" -v /sys/fs/cgroup:/sys/fs/cgroup  centos  /usr/sbin/init

-e:设置环境变量

-v:将容器内的内核与本地的内核文件进行绑定

/ usr / sbin目录/初始化让宿主机重启立刻生效

本文旨在提供参考,如有错误,欢迎大家指正。帮助编者不断的改进!

猜你喜欢

转载自blog.csdn.net/Scirhh/article/details/81276651