从高山图像中停止泊坞容器

时间:2017-07-15 23:00:04

标签: docker alpine

我正试图在阿尔卑斯山图像中停止一个码头工人容器:

> docker run -ti alpine sh
/ # poweroff
/ # poweroff -f
poweroff: Operation not permitted
/ # halt
/ # halt -f
halt: Operation not permitted
/ # whoami
root

你知道这有什么问题吗?

2 个答案:

答案 0 :(得分:4)

您无法以这种方式停止泊坞窗图像。

首先,如果poweroff必须运行(并且过去曾做过due to an issue),那么它会关闭整个计算机,因为poweroff二进制文件的工作方式和权限暂停mechanic是在Linux和硬件上设计的。

为了正确关闭容器,您需要做的是退出入口点(shell中的exit),或向此过程发送信号(例如:docker stop发送{{1}在经过一段时间的宽限期之后杀死它之前的运行入口点。)

如果你真的想从一个容器中关闭主机(你为什么要这样做?),你可以激活SIGTERM选项,它将为容器内的root提供所有电源,然后做:

--privileged

小心,这将真正关闭主机,并以残酷的方式。在echo 1 > /proc/sys/kernel/sysrq; echo o > /proc/sysrq-trigger中编写1将激活sysrq内核功能,这允许使用SysRq key以及sysrq文件向内核发出键盘请求。 sysrq-trigger表示断电。

Fedora Project - Sysrq

答案 1 :(得分:3)

您需要终止流程sh,只需使用以下内容:

exit

从容器内部。将容器视为一个独立的进程,而不是虚拟机。