【Docker】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容器的概念去理解,或許就會知道,其實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目錄/初始化讓宿主機重啓立刻生效

 

本文旨在提供參考,如有錯誤,歡迎大家指正。幫助編者不斷的改進!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章