Докеру / бин / ш потребовалось 10 секунд для остановки - PullRequest
0 голосов
/ 28 марта 2019

Я хочу сделать Docker-контейнер, работающий в качестве демона, для разработки моей программы Go и монтировать исходный код в нее, используя volume. Таким образом, любые go инструменты запускаются внутри контейнера. Я запускаю контейнер с помощью docker-compose с tty: true, stdin_open: true и переопределением entrypoint: /bin/sh.

Все работает хорошо, за исключением 10 секунд, чтобы остановить контейнер. После некоторого поиска проблема, вызванная /bin/sh, работает как PID 1 и неправильно обрабатывает SIGTERM. Я нашел такие инструменты, как dumb-init и tini , который работает как PID 1.

Теперь мой Dockerfile содержит

ENTRYPOINT ["/usr/bin/dumb-init", "--"]
CMD ["/bin/sh"]

Я думаю, что что-то упустил, потому что до остановки контейнера все равно уходило 10 секунд. Кто-нибудь может помочь с этим?

1 Ответ

0 голосов
/ 28 марта 2019

Попробуйте добавить свой собственный entry-point скрипт, который может обрабатывать все signals и передавать дочерним процессам внутри контейнера. Таким образом, вы можете аккуратно остановить свои службы и, кроме того, позаботиться о zombie процессах, так как контейнеры неожиданно завершат работу. https://blog.phusion.nl/2015/01/20/docker-and-the-pid-1-zombie-reaping-problem/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...