В принципе, вам нужно PID 1, чтобы выйти, чтобы остановить контейнер.
Первоначально я думал, что kill -s SIGKILL 1
будет работать, но PID 1 защищен, поэтому нет.
Как было предложено @Thomasleveil, вы можете добавить код, такой как trap "exit" SIGINT SIGTERM
, в скрипт PID 1, что будет означать, что процесс будет отправлен при отправке kill -s SIGINT 1
. Я немного предпочитаю этот метод тому, с которым вы столкнулись (убивая дочерний процесс напрямую), поскольку он дает родительскому процессу возможность очистить, а также родительский процесс должен иметь возможность найти PID дочернего процесса без awk.
Однако, если вы используете несколько процессов, вам следует использовать что-то вроде supervisord или runit.
'shutdown -h now'? – zero323
Какое изображение является вашим контейнером на основе? – Thomasleveil
это от ubuntu: 12.04 –