我試圖從高山圖像內停止泊塢窗容器內停止泊塢窗容器:從高山圖像
> 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