Zasadniczo trzeba PID 1 do wyjść, aby zatrzymać pojemnik.
Początkowo sądziłem, że kill -s SIGKILL 1
zadziała, ale PID 1 jest chroniony, a więc nie.
Zgodnie z sugestią @Thomasleveil, można dodać kod taki jak trap "exit" SIGINT SIGTERM
do skryptu PID 1, co będzie oznaczać, że proces zakończy się po wysłaniu kill -s SIGINT 1
. Nieco wolę tę metodę od tej, którą wymyśliłeś (zabijając proces potomny bezpośrednio), ponieważ daje ona procesowi macierzystemu szansę na oczyszczenie, a także proces nadrzędny powinien być w stanie znaleźć PID procesu potomnego bez awk.
Jeśli jednak używasz wielu procesów, powinieneś rozważyć użycie czegoś takiego jak supervisord lub runit.
'shutdown -h now'? – zero323
na jakim obrazie jest Twój pojemnik? – Thomasleveil
pochodzi z ubuntu: 12.04 –