我试图从高山图像内停止泊坞窗容器内停止泊坞窗容器:从高山图像
> docker run -ti alpine sh
/# poweroff
/# poweroff -f
poweroff: Operation not permitted
/# halt
/# halt -f
halt: Operation not permitted
/# whoami
root
你看到了什么是问题与此?
我试图从高山图像内停止泊坞窗容器内停止泊坞窗容器:从高山图像
> docker run -ti alpine sh
/# poweroff
/# poweroff -f
poweroff: Operation not permitted
/# halt
/# halt -f
halt: Operation not permitted
/# whoami
root
你看到了什么是问题与此?
您无法以这种方式停止泊坞窗图像。
首先,如果poweroff
不得不功能(和它过去那样,due to an issue),它会因为poweroff
二是如何工作的,并停止电力机械设计在Linux和硬件的关闭整个计算机。
你有什么为了做正确的关闭您的容器退出入口点(壳exit
),或发送信号到这个过程中(如:docker stop
发送SIGTERM
到正在运行的入口点一段时间后杀死它之前的恩典)。
如果您真的想从容器内关闭主机(您为什么要这样做?),您可以激活--privileged
选项,该选项将在容器内为您的根提供所有权力,然后执行:
echo 1 > /proc/sys/kernel/sysrq; echo o > /proc/sysrq-trigger
要小心,这将真的关闭主机,并在残酷的方式。在sysrq
中编写1
将激活sysrq
内核功能,该功能允许通过SysRq key而不是通过sysrq-trigger
文件向内核发出键盘请求。 o
意味着poweroff。
您需要终止进程sh
,仅仅用这个:
exit
从容器内。将容器看作是一个孤立的进程,而不是虚拟机。
谢谢@Fabien。你知道是否可以从'docker exec'发送这个'SIGTERM'? – Joan
是的,您可以,您只需要知道入口点的PID或程序名称,然后使用'kill' – Fabien