问题

基于docker启动了centos容器,需要在centos容器里使用​​systemctl start xxx​​启动服务,出现错误:

Failed to get D-Bus connection: Operation not permitted

原因

ptrace系统调用的权限问题,容器默认情况下是没有权限去ptrace进程的。

解决方法

启动容器的时候通过​​privileged=true​​​开启特权模式,并且以​​/usr/sbin/init​​作为入口命令启动,例如:

docker run -d -name centos7 --privileged=true centos:7 /usr/sbin/init

这样启动的容器,使用命令 ​​docker exec -it centos7 /bin/bash​​​ 进入容器后,就可以在内部使用 ​​systemctl start​​ 启动服务了。


(END)