Вопрос проверяет знание Unix-сигналов и понимание того, как Docker инициирует корректное завершение контейнера.
При выполнении docker stop контейнеру отправляется сигнал SIGTERM. Этот сигнал сообщает процессу, что его просят завершиться корректно. Процесс может перехватить сигнал и выполнить очистку ресурсов. Если контейнер не завершится вовремя, Docker отправит SIGKILL. Таким образом обеспечивается баланс между корректностью и надёжным завершением.
Docker использует стандартные Unix-сигналы для управления процессами внутри контейнера.
SIGTERM — это сигнал операционной системы, который запрашивает у процесса корректное завершение работы.
Когда процесс получает SIGTERM, он может:
перехватить сигнал;
выполнить cleanup-логику;
завершиться самостоятельно.
Это даёт приложению шанс:
закрыть соединения;
дописать данные;
освободить ресурсы.
При выполнении команды:
Docker отправляет SIGTERM процессу с PID 1 в контейнере;
запускается таймер ожидания завершения.
Параметр:
--time позволяет задать время ожидания вручную.
Если процесс:
корректно завершился → контейнер остановлен;
не завершился → Docker отправляет SIGKILL.
обрабатывайте SIGTERM в серверных приложениях;
корректно завершайте фоновые потоки;
не игнорируйте сигнал.
docker stop сначала отправляет SIGTERM, давая приложению возможность корректно завершиться. Это ключевой механизм безопасной остановки контейнеров.