
Я хотел бы узнать, возможно ли запустить bash-скрипт на хосте, когда Docker-контейнер остановлен.
Например, я хотел бы остановить службу, когда мой контейнер остановлен.
Я видел, что перехват сигнала SIGTERM возможен, и что затем можно выполнить некоторые команды bash в контейнере. Может быть, есть способ перехватить сигнал SIGTERM на хост-машине, а затем запустить скрипт...
решение1
Пытатьсясобытия докераиспользуя соответствующий фильтр. Т.е.
$ 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
Вторая команда зависла до тех пор, пока не завершится команда сна контейнера.