Docker容器使用問題:Failed to get D-Bus connection

場景mysql

        Docker容器安裝CentOS Linux release 7.9.2009 (AltArch),運行命令,提示出錯sql

[root@atlas800 init.d]# service mysql start
Failed to get D-Bus connection: Operation not permitteddocker

[root@atlas800 init.d]# firewall-cmd --zone=public --list-ports
Error: DBUS_ERROR: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directorycentos

網上說明socket

                緣由:在centos7的docker容器裏面不能用service啓動服務。報這個錯的緣由是dbus-daemon沒能啓動。systemctl並非不能使用。將CMD或者entrypoint設置爲/usr/sbin/init便可。docker容器會自動將dbus等服務啓動起來。ide

Docker的設計理念是在容器裏面不運行後臺服務,容器自己就是宿主機上的一個獨立的主進程,也能夠間接的理解爲就是容器裏運行服務的應用進程。一個容器的生命週期是圍繞這個主進程存在的,因此正確的使用容器方法是將裏面的服務運行在前臺。再說到systemd,這個套件已經成爲主流Linux發行版(好比CentOS七、Ubuntu14+)默認的服務管理,取代了傳統的SystemV風格服務管理。systemd維護系統服務程序,它須要特權去會訪問Linux內核。而容器並非一個完整的操做系統,只有一個文件系統,並且默認啓動只是普通用戶這樣的權限訪問Linux內核,也就是沒有特權,因此天然就用不了!所以,請遵照容器設計原則,一個容器裏運行一個前臺服務!centos7

相關文章
相關標籤/搜索