Docker:容器停止時如何在主機上啟動腳本?

Docker:容器停止時如何在主機上啟動腳本?

我想知道當 docker 容器停止時是否可以在主機上啟動 bash 腳本。

例如,我想在容器停止時停止服務。

我發現捕獲 SIGTERM 訊號是可能的,然後您可以在容器中執行一些 bash 命令。也許有一種方法可以捕獲主機上的 SIGTERM 訊號,然後啟動腳本...

答案1

嘗試碼頭工人事件使用適當的過濾器。 IE

$ docker events --filter 'container=alpine-bash' --filter 'event=stop'
> 2019-07-26T17:25:35.944807432+04:00 container stop 5db8ba01c4ca26b4417bd080d9022b74893a865eefe22dc987f8d18fda104f39 (image=yikaus/alpine-bash, name=alpine-bash)

答案2

您可以使用docker container wait命令:

$ docker container wait --help

Usage:  docker container wait CONTAINER [CONTAINER...]

Block until one or more containers stop, then print their exit codes

範例用法如下:

$ docker run -d --rm --name test-wait busybox sleep 10
9ca77ac5121690110e8fdf58e73583918fa9b1a5de56ab89eb70cc89be97f3fa

$ docker container wait test-wait
0

第二個命令掛起,直到容器的睡眠命令完成。

相關內容