如标题所示,从一个容器中重启主机是否可能?我有一个使用systemd运行的Docker容器,可以在这里查看说明,并按以下方式启动:
$ docker run -privileged --net host -ti -d -v /sys/fs/cgroup:/sys/fs/cgroup:ro <image_name>
一旦我执行了systemctl reboot
命令,我会看到:
# systemctl reboot
[root@dhcp-40-115 /]#
[3]+ Stopped
主机不重新启动。但是我在主机的内核缓冲区中看到 [1915595.016950] systemd-journald[17]: Received SIGTERM from PID 1 (systemd-shutdow).
。
使用案例:
我正在尝试在容器中运行restraint测试工具,其中一些测试会重启主机。因此,如果可以从容器中进行操作,则可以无需更改测试即可运行。
更新
正如我在答案中提到的:
我在上面的问题中错过了一个细节,那就是一旦我在容器本身中运行systemd,systemctl reboot就会(粗略地说)连接到容器本身上的systemd,这不是我想要的。
接受的答案有一个优点,它不依赖于主机和容器发行版是否具有兼容的systemd
。但是,在它们兼容时,我认为我的答案是更可接受的,因为您可以使用常规的reboot
命令。
其他初始化系统,如upstart
未经测试。
echo b > /sysrq
会立即重新启动系统,而不会同步或卸载您的磁盘。请参阅https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html#what-are-the-command-keys。 - undefined