docker centos7镜像 Failed to get D-Bus connection: Operation not permitted
docker centos7镜像中使用service或者systemctl提示Failed to get D-Bus connection: Operation not permitted,目前来看,这个问题只发生在centos7中,centos6.5镜像应当没这个问题,至于产生的原因,网上有相关的讨论:
http://dockone.io/question/729
原来的systemd会需要CAP_SYS_ADMIN,我们不想这样,就换成了fakesystemd,所以你会遇到上面奇葩的问题.当然官方repo也给出了解决方案不过比较复杂.
如果是没有service命令造成的,要先安装这个命令:1
yum install -y initscripts
以特权方式启动centos7镜像:1
docker run -it --privileged=true registry.docker-cn.com/library/centos:7 /bin/bash
例如重启mysql服务时报了如下错误:1
2
3[root@773a8f8c2a43 ~]# service mysqld restart
Redirecting to /bin/systemctl restart mysqld.service
Failed to get D-Bus connection: Operation not permitted
解决方案如下,只需要执行一个命令:1
exec /usr/sbin/init
需要注意的是这里不能单纯的执行/usr/sbin/init
,否则是不能生效的,执行完之后再次使用docker exec
命令进入docker即可,此时service命令使用正常。
参考链接:
- https://forums.docker.com/t/any-simple-and-safe-way-to-start-services-on-centos7-systemd/5695/8
- http://dockone.io/question/729
该博文来自于ieayoio的博客:ieayoio’s blog