n1ro°
RU

Ошибки и коды · Инструкция

Docker container unhealthy: диагностика HEALTHCHECK

Выполните `docker inspect <container>` и найдите последние health logs с exit code/output. Запустите ту же HEALTHCHECK-к

Редакция N1RO · Проверено

Короткий ответ

Посмотрите `.State.Health.Log` через `docker inspect`, вручную выполните ту же health-команду внутри container и исправьте endpoint/команду или параметры `interval`, `timeout`, `retries`, `start_period` вместо фиктивного `exit 0`.

Проверка по порядку

  • Выполните `docker inspect <container>` и найдите последние health logs с exit code/output.
  • Запустите ту же HEALTHCHECK-команду вручную через `docker exec`, если container работает.
  • Проверьте, что используемый `curl`/`wget`/shell вообще присутствует в runtime image.

Исправление

  1. Для долгого старта настройте `start_period`, а не бесконечные retries после нормального старта.
  2. Если Compose-зависимость должна ждать готовности, используйте поддерживаемое условие `service_healthy`.
  3. Пересоздайте container и проверьте переход `starting` → `healthy` вместе с реальной доступностью endpoint.

Как понять, что исправлено

  • docker inspect показывает status healthy, Health.Log содержит успешный probe, а сервис реально отвечает на проверяемом endpoint.

Важно

Не заменяйте HEALTHCHECK на exit 0: это скрывает сбой оркестрации. Исправьте probe, endpoint или timing после просмотра Health.Log.

Что учитывать

Не заменяйте HEALTHCHECK на exit 0: это скрывает сбой оркестрации. Исправьте probe, endpoint или timing после просмотра Health.Log.

Источники и проверка

Фактическая часть сверена по первичным источникам (в т.ч. Dockerfile reference — HEALTHCHECK). Пример и формулировки — редакция N1RO на 2026-09-17.