如何在docker容器內使用systemctl

2021-08-15 22:45:32 字數 1512 閱讀 5644

docker版本:

[root@localhost gae_proxy]# docker version

client:

version: 1.10.3

api version: 1.22

package version: docker-common-1.10.3-46.el7.centos.10.x86_64

go version: go1.6.3

git commit: d381c64-unsupported

built: thu aug 4

13:21:17

2016

os/arch: linux/amd64

server:

version: 1.10.3

api version: 1.22

package version: docker-common-1.10.3-46.el7.centos.10.x86_64

go version: go1.6.3

git commit: d381c64-unsupported

built: thu aug 4

13:21:17

2016

os/arch: linux/amd64

映象版本

[root@b2ca5610d3da /]# cat /etc/redhat-release

centos

linux release 7.2.1511 (core)

在docker中通過systemctl 啟動服務的時候總是報failed to get d-bus connection: operation not permitted 這樣的錯誤提示。
[root@25d27693a24d ~]# systemctl start sshd

failed to

get d-bus connection: operation not permitted

解決辦法就是在docker run 的時候執行/usr/sbin/init 。比如:
[root@localhost /]# docker run -tid --name hadoopbase centos/hadoopbase:v001 /usr/sbin/init
這樣執行起來的container就可以使用systemctl來啟動服務了,有的人說在centos7.2中解決了通過systemctl執行報錯的問題,但是我在實際操作中還是遇到這樣的問題。

還有一種解決辦法,就是在通過dockerfile生成映象檔案的時候,通過cmd來執行/usr/sbin/init這條命令,即:cmd [ "/usr/sbin/init"];

參考:

Docker 容器內如何重啟其他容器

有的時候我們需要在docker容器內操作其他容器,比如做乙個容器專門做安裝公升級,公升級完需要重啟其他的容器。需要映象中安裝docker ce,如下圖,在映象中安裝docker ce from centos run curl o etc yum.repos.d docker ce.repo yum ...

如何在docker容器中啟jupyter

docker h 0.0.0.0 run it rm p 18888 8888 v pwd dump data root dump data harbor.atompai.com nitrogen xdock v1 bin bash設定密碼 pip install jupyter啟動容器 docke...

docker如何啟動容器並執行容器內指令碼

1.問題描述 啟動docker容器後,執行容器內指令碼 2.案例需求 現在需要用docker起乙個centos7的環境,安裝乙個pyhton,跑乙個定時任務,當時執行指令碼。3.解決 開始嘗試 使用systemctl 啟動crond 執行pyhton專案指令碼,結果docker容器中沒有system...