问题
基于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)