我想知道当 docker 容器停止时是否可以在主机上启动 bash 脚本。
例如,当我的容器停止时,我想停止一项服务。
我发现可以捕获 SIGTERM 信号,然后可以在容器中执行一些 bash 命令。也许有一种方法可以在主机上捕获 SIGTERM 信号,然后启动脚本...
答案1
尝试docker 事件使用适当的过滤器。例如
$ 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
第二条命令挂起,直到容器的睡眠命令完成。