2016-03-05 4 views
5

Ich versuche, Andock-Container mit Docker-Datei zu erstellen, wo script-entry.sh ausgeführt werden soll, wenn die Container gestartet werden und script-exit.sh ausgeführt wird, wenn der Container beendet wird.Führen Sie ein Skript aus, wenn Andockfenster gestoppt ist

ENTRYPOINT half dabei, den ersten Teil des Problems zu lösen, bei dem script-entry.sh beim Start ausgeführt wird.

Wie werde ich sicherstellen, dass die Skript-exit.sh auf Docker exit/stop ausgeführt wird?

+0

Docker-Dämon protokolliert alles, warum nicht ein Skript/Programm schreiben, das die Protokolle analysiert, und wenn die gerade Container-ID aufhört zu erscheinen, führen Sie das gewünschte Skript aus. – Auzias

+0

@Auzias Es gibt eine [event api] (https://gliderlabs.com/blog/2015/04/14/docker-events-explained/) und eine ['events'] (https: //docs.docker. com/engine/reference/commandline/events /) Befehl in Docker integriert, die für solche Aufgaben besser geeignet wäre – Matt

+0

@Auzias auch etwas nach dem Stop Event wird wahrscheinlich nicht in der Lage sein zu laufen oder unterbrochen zu werden. – Matt

Antwort

8

docker stop sendet ein Signal SIGTERM an den Hauptprozess, der im Docker-Container ausgeführt wird (das Eingabeskript). Sie benötigen also eine Möglichkeit, das Signal abzufangen und dann das Exit-Skript auszulösen.

Siehe This link zur Erläuterung auf Signal-Trapping und ein Beispiel (in der Nähe des Ende der Seite)

0

Erstellen Sie ein Skript, und es als eine bash-Datei speichern, das enthält, dass folgende:

$CONTAINER_NAME="someNameHere" 
docker exec -it $CONTAINER_NAME bash -c "sh script-exit.sh" 
docker stop $CONTAINER_NAME 

Führen Sie diese Datei aus, anstatt docker stop auszuführen, und das sollte den Trick machen. Sie können dafür auch einen Alias ​​einrichten.

Wie für die Automatisierung in Docker selbst, ich habe es noch nie zuvor gesehen. Viel Glück, es herauszufinden, wenn das die Straße ist, die Sie nehmen wollen.

+3

Es beantwortet die Frage nicht. Die Frage ist: "Wie man ein Skript ausführt, sobald ein Container gestoppt wurde", was sich von "Wie führe ich ein Skript aus und stoppe dann den Container" unterscheidet – Auzias

Verwandte Themen