Как работают healthcheck и restart policy у контейнера?
Контейнеры, volumes и сети
Healthcheck — периодическая проверка внутри контейнера, переводящая его в статус healthy или unhealthy, а restart policy определяет, перезапускать ли контейнер после завершения процесса.
Healthcheck
HEALTHCHECK --interval=30s --timeout=3s --retries=3 \
CMD curl -f http://localhost/health || exit 1- Статусы: starting → healthy / unhealthy после
retriesподряд. - Сам Docker по healthcheck контейнер не перезапускает, статус читают оркестратор или мониторинг.
Restart policy
no— не перезапускать (по умолчанию).on-failure:5— только при ненулевом коде выхода, максимум пять раз.always— всегда, включая перезапуск демона.unless-stopped— как always, но не трогает вручную остановленные.
Типичная связка в Compose
restart: unless-stopped плюс healthcheck, а depends_on с condition: service_healthy ждёт готовности зависимости.
Коротко для собеседования
Healthcheck лишь помечает контейнер как healthy или unhealthy, а решение о перезапуске принимает restart policy по коду выхода процесса. Частая ошибка — ждать, что Docker сам перезапустит unhealthy-контейнер: без оркестратора этого не будет, статус используют мониторинг и depends_on.