【发布时间】:2020-08-05 13:59:42
【问题描述】:
我想在 docker 容器完成工作时关闭机器(主机)。
我的主机操作系统是 Ubuntu。
容器可以以--privileged=true 运行。这不是问题。
我设法用命令(在 stackoverflow 答案中找到)做到了这一点:
subprocess.run("echo 1 > /proc/sys/kernel/sysrq; echo o > /proc/sysrq-trigger", shell=True, check=True)
这种方法的问题是在 Linux 中立即、不干净地关闭。
如果我以shutdown now 的身份尝试一种干净的方式,我会收到以下错误:System has not been booted with systemd as init system (PID 1). Can't operate.
如何在我的容器中使用 shutdown、halt 或其他替代方法来关闭主机?
【问题讨论】:
-
你不需要一个子进程和一个shell来打开两个伪文件并写入它们。
-
with open('/proc/sys/kernel/sysrq', 'w') as sysrq, open('/proc/sysrq-trigger') as trigger: sysrq.write('1\n'); trigger.write('o\n')
标签: docker ubuntu shutdown docker-privileged