PassFront
  1. PassFront
  2. База знаний
  3. Контейнеры, volumes и сети

Как работают 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.

Другие вопросы раздела