
Gostaria de saber se é possível iniciar o script bash no host quando um contêiner docker é interrompido.
Por exemplo, gostaria de interromper um serviço quando meu contêiner estiver interrompido.
Vi que é possível capturar o sinal SIGTERM e que você pode então executar alguns comandos bash no contêiner. Talvez haja uma maneira de capturar o sinal SIGTERM na máquina host e então iniciar um script...
Responder1
Tentareventos dockerusando filtro apropriado. Ou seja
$ 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)
Responder2
Você pode usar o docker container wait
comando:
$ docker container wait --help
Usage: docker container wait CONTAINER [CONTAINER...]
Block until one or more containers stop, then print their exit codes
Um exemplo de uso é semelhante a:
$ docker run -d --rm --name test-wait busybox sleep 10
9ca77ac5121690110e8fdf58e73583918fa9b1a5de56ab89eb70cc89be97f3fa
$ docker container wait test-wait
0
O segundo comando ficou suspenso até que o comando sleep do contêiner fosse concluído.