2016-03-05 22 views
5

Próbuję utworzyć kontener dokowany za pomocą pliku dokowanego, w którym skrypt -entry.sh ma zostać wykonany po uruchomieniu kontenerów, a skrypt -exit.sh zostanie wykonany po zatrzymaniu kontenera.Uruchamiaj skrypt po zatrzymaniu okna dokowanego.

ENTRYPOINT pomógł zrealizować pierwszą część problemu, w którym skrypt-entry.sh uruchamia się podczas uruchamiania.

Jak mogę się upewnić, że skrypt -exit.sh jest wykonywany przy zamykaniu/zamykaniu doku?

+0

Demon Docker'a rejestruje wszystko, czemu nie napisać skryptu/programu, który analizuje logi, a gdy zniknie nawet parametr containerID, wykonaj skrypt, który chcesz. – Auzias

+0

@Auzias Istnieje api [zdarzenie] (https://gliderlabs.com/blog/2015/04/14/docker-events-explained/) i ['events'] (https: //docs.docker. com/engine/reference/commandline/events /) wbudowane w docker polecenie, które byłoby lepiej dostosowane do takich zadań, jak np. – Matt

+0

@Auzias również uruchamia coś po zdarzeniu stop, które prawdopodobnie nie będzie mogło być uruchomione lub przerwane. – Matt

Odpowiedz

8

przesyła sygnał SIGTERM do głównego procesu uruchomionego w kontenerze Docker (skrypt wejściowy). Potrzebujesz więc sposobu na złapanie sygnału, a następnie wywołanie skryptu wyjścia.

Zobacz This link dla objaśnienia wyłapywania sygnału i przykład (przy końcu strony)

0

utworzyć skrypt, i zapisać go w postaci pliku bash, który zawiera który następuje:

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

Uruchom ten plik zamiast uruchamiać docker stop, a to powinno wystarczyć. Możesz także ustawić alias dla tego.

Jeśli chodzi o automatyzację wewnątrz samego Dockera, nigdy wcześniej tego nie robiłem. Powodzenia w ustalaniu tego, czy to droga, którą chcesz wziąć.

+3

Nie odpowiada na pytanie. Pytanie brzmi: "jak wykonać skrypt po zatrzymaniu kontenera", co różni się od "jak wykonać skrypt, a następnie zatrzymać kontener" – Auzias

Powiązane problemy