2017-07-15 62 views
3

我试图从高山图像内停止泊坞窗容器内停止泊坞窗容器:从高山图像

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

你看到了什么是问题与此?

回答

3

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

首先,如果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。

Fedora Project - Sysrq

+0

谢谢@Fabien。你知道是否可以从'docker exec'发送这个'SIGTERM'? – Joan

+0

是的,您可以,您只需要知道入口点的PID或程序名称,然后使用'kill' – Fabien

3

您需要终止进程sh,仅仅用这个:

exit 

从容器内。将容器看作是一个孤立的进程,而不是虚拟机。