我正在嘗試使用dockerfile創建docker容器,其中script-entry.sh將在容器啓動時執行,script-exit.sh在容器停止時執行。docker停止時運行腳本
入口點幫助完成了script-entry.sh在啓動時運行的問題的第一部分。
我將如何確保在docker exit/stop上執行script-exit.sh?
我正在嘗試使用dockerfile創建docker容器,其中script-entry.sh將在容器啓動時執行,script-exit.sh在容器停止時執行。docker停止時運行腳本
入口點幫助完成了script-entry.sh在啓動時運行的問題的第一部分。
我將如何確保在docker exit/stop上執行script-exit.sh?
docker stop
發送一個SIGTERM
信號給在Docker容器(入口腳本)內運行的主進程。所以你需要一種方法來捕捉信號,然後觸發退出腳本。
見This link用於解釋在信號捕獲和一個例子(靠近頁面末尾)
創建一個腳本,並將其保存爲一個bash文件,它包含以下內容:
$CONTAINER_NAME="someNameHere"
docker exec -it $CONTAINER_NAME bash -c "sh script-exit.sh"
docker stop $CONTAINER_NAME
運行該文件而不是運行docker stop
,這應該可以做到。你也可以爲它設置一個別名。
至於在Docker自身內部實現自動化,我從來沒有見過它。祝你好運,如果這是你想要的道路。
它不回答這個問題。問題是:「一旦容器停止,如何執行腳本」,這與「如何執行腳本然後停止容器」不同。 – Auzias
Docker守護進程會記錄所有內容,爲什麼不編寫解析日誌的腳本/程序,並且在偶數containerID停止時出現,執行您想要的腳本。 – Auzias
@Auzias有[event api](https://gliderlabs.com/blog/2015/04/14/docker-events-explained/)和['events'](https://docs.docker。 com/engine/reference/commandline/events /)命令,這將更適合於這樣的任務 – Matt
@Auzias在停止事件之後也運行某些東西可能無法運行或中斷。 – Matt