报错现象以下
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