問題
docker運行CentOS7.7容器,裏面安裝了一個Nginx服務器,當我用"systemctl start nginx.service"啓動nginx服務,結果報錯"Failed to get D-Bus connection: Operation not permitted"。
分析
systemd是一個維護系統服務程序,他的執行需要特權訪問Linux系統內核;而容器本身只是一個文件系統(不同於虛擬機,虛擬機是一套完整的操作系統),不運行後臺服務,而默認啓動只是以普通用戶訪問Linux內核,也就是沒有特權,所以就需要運行容器的時候授權。
解決
# 加上--privileged運行容器
docker run -itd --privileged --name "centos7.7" centos:v1
# exec命令進入centos7.7容器
docker exec -it ea7ee0822b9c /bin/bash
# 之後就可以用systemctl命令啓動nginx服務
systemctl start nginx.service