
Ich möchte wissen, ob es möglich ist, ein Bash-Skript auf dem Host zu starten, wenn ein Docker-Container gestoppt ist.
Ich möchte beispielsweise einen Dienst stoppen, wenn mein Container gestoppt wird.
Ich habe gesehen, dass es möglich ist, das SIGTERM-Signal abzufangen und dann einige Bash-Befehle im Container auszuführen. Vielleicht gibt es eine Möglichkeit, das SIGTERM-Signal auf dem Host-Rechner abzufangen und dann ein Skript zu starten ...
Antwort1
VersuchenDocker-Ereignissemit dem entsprechenden Filter.
$ 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)
Antwort2
Sie können den folgenden docker container wait
Befehl verwenden:
$ docker container wait --help
Usage: docker container wait CONTAINER [CONTAINER...]
Block until one or more containers stop, then print their exit codes
Ein Anwendungsbeispiel sieht so aus:
$ docker run -d --rm --name test-wait busybox sleep 10
9ca77ac5121690110e8fdf58e73583918fa9b1a5de56ab89eb70cc89be97f3fa
$ docker container wait test-wait
0
Der zweite Befehl blieb hängen, bis der Ruhebefehl des Containers abgeschlossen war.