2016-03-05 162 views
5

我正在嘗試使用dockerfile創建docker容器,其中script-entry.sh將在容器啓動時執行,script-exit.sh在容器停止時執行。docker停止時運行腳本

入口點幫助完成了script-entry.sh在啓動時運行的問題的第一部分。

我將如何確保在docker exit/stop上執行script-exit.sh?

+0

Docker守護進程會記錄所有內容,爲什麼不編寫解析日誌的腳本/程序,並且在偶數containerID停止時出現,執行您想要的腳本。 – Auzias

+0

@Auzias有[event api](https://gliderlabs.com/blog/2015/04/14/docker-events-explained/)和['events'](https://docs.docker。 com/engine/reference/commandline/events /)命令,這將更適合於這樣的任務 – Matt

+0

@Auzias在停止事件之後也運行某些東西可能無法運行或中斷。 – Matt

回答

8

docker stop發送一個SIGTERM信號給在Docker容器(入口腳本)內運行的主進程。所以你需要一種方法來捕捉信號,然後觸發退出腳本。

This link用於解釋在信號捕獲和一個例子(靠近頁面末尾)

0

創建一個腳本,並將其保存爲一個bash文件,它包含以下內容:

$CONTAINER_NAME="someNameHere" 
docker exec -it $CONTAINER_NAME bash -c "sh script-exit.sh" 
docker stop $CONTAINER_NAME 

運行該文件而不是運行docker stop,這應該可以做到。你也可以爲它設置一個別名。

至於在Docker自身內部實現自動化,我從來沒有見過它。祝你好運,如果這是你想要的道路。

+3

它不回答這個問題。問題是:「一旦容器停止,如何執行腳本」,這與「如何執行腳本然後停止容器」不同。 – Auzias