報錯現象以下
System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down
解決方案一
檢查啓動命令 加參數 -itd --privileged 若是dockerfile中CMD中沒有執行 要在後面命令加/usr/sbin/initdocker
dockerun --privileged -itd --name systemctl3 -v /sys/fs/cgroup:/sys/fs/cgroup:ro systemctl:testbash
解決方案二
重啓一個docker在後臺運行 執行上面的命令
dockerun --privileged -itd --name systemctl3 -v /sys/fs/cgroup:/sys/fs/cgroup:ro systemctl:test
spa
緣由詳解
–privateged 使container內的root擁有真正的root權限,不進行降權處理。不然,容器內的用戶只是外部的一個普通用戶,普通用戶還想訪問內核?讓systemctl管理系統? 並且默認狀況下,在第一步執行的是 /bin/bash 因此咱們使用了 /usr/sbin/init覆蓋/bin/bashcode
同時 只能使用 docker exec -it systemctl5 /bin/bash 由於 exec 能夠讓咱們執行被覆蓋掉的默認命令 /bin/bash 同時 -it 也是必須的。dockerfile