Встречается на собеседованиях • сегодня
Почему 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"]
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы