Встречается на собеседованиях • сегодня

Почему PID у первого контейнера в Docker равен 1

В Docker первый процесс (обычно указанный в CMD или ENTRYPOINT) запускается с PID 1. Это происходит потому, что контейнеры используют изолированные пространства имён (namespaces), включая пространство PID. Внутри контейнера этот процесс становится "init"-процессом, аналогично systemd или init в обычной системе.

Особенности PID 1 в контейнере:

  • Должен корректно обрабатывать сигналы (например, SIGTERM при docker stop).
  • Если процесс завершится — контейнер остановится.

Пример проблемы:

python
# Если основной процесс — Python-скрипт без обработки сигналов
import time
time.sleep(1000)  # Контейнер не остановится по SIGTERM

Решение:
Используйте tini (легковесный init) или явную обработку сигналов в коде. В Dockerfile:

dockerfile
ENTRYPOINT ["/sbin/tini", "--", "python", "app.py"]
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы