gpt4 book ai didi

docker - 从 docker 容器重启主机

转载 作者:IT老高 更新时间:2023-10-28 21:22:16 26 4
gpt4 key购买 nike

如标题所示,是否可以从容器中重新启动主机?我有一个使用 systemd 运行的 docker 容器,如 here 所述并开始:

$ 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 test harness在容器中,一些测试会重新启动主机,因此如果可以从容器中执行此操作,则测试可以不变地运行。

更新

正如我在回答中提到的:

There is a detail I missed in my question above which is once I have systemd running in the container itself, the systemctl reboot is (roughly saying) connecting to systemd on the container itself which is not what I want.

接受的答案的优点是它不依赖于主机并且容器发行版具有兼容的systemd。但是,在它们所在的设置中,我的答案是我认为更可接受的答案,因为您可以使用通常的 reboot 命令。

upstart 等其他初始化系统未经测试。

最佳答案

我能够将 sysrq 命令发送到安装 /proc/sysrq-trigger 作为卷的主机。

这启动了主机。

docker-server# docker run -i -t -v /proc/sysrq-trigger:/sysrq centos bash
docker-container# echo b > /sysrq

您可以在主机上的 /proc/sys/kernel/sysrq 上设置位掩码权限,以仅允许同步磁盘和引导等。更多信息请访问 http://en.wikipedia.org/wiki/Magic_SysRq_key但是这样的东西(未经测试)应该设置这些权限:

echo 144 > /proc/sys/kernel/sysrq

还记得将 kernel.sysrq = 144 添加到 /etc/sysctl.conf 以在重启时保存它。

关于docker - 从 docker 容器重启主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24750137/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com