編者在使用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目錄/初始化:讓宿主機重啓立刻生效
本文旨在提供參考,如有錯誤,歡迎大家指正。幫助編者不斷的改進!