2017-07-15 59 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 

從容器內。將容器看作是一個孤立的進程,而不是虛擬機。