
Me gustaría saber si es posible iniciar un script bash en el host cuando se detiene un contenedor acoplable.
Por ejemplo, me gustaría detener un servicio cuando se detiene mi contenedor.
Vi que es posible captar la señal SIGTERM y que luego puedes ejecutar algunos comandos bash en el contenedor. Tal vez haya una manera de captar la señal SIGTERM en la máquina host y luego ejecutar un script...
Respuesta1
Intentareventos acoplablesutilizando el filtro adecuado. Es decir
$ 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)
Respuesta2
Puedes usar el 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
Un ejemplo de uso es el siguiente:
$ docker run -d --rm --name test-wait busybox sleep 10
9ca77ac5121690110e8fdf58e73583918fa9b1a5de56ab89eb70cc89be97f3fa
$ docker container wait test-wait
0
El segundo comando se suspendió hasta que finalizó el comando de suspensión del contenedor.