Docker Debug Flow — Что делать, если контейнер не работает Эта страница описывает пошаговый алгоритм диагностики Docker-контейнеров. Она помогает быстро определить причину проблемы, если контейнер не запускается, сервис недоступен или приложение работает некорректно. Материал ориентирован на начинающих и представляет собой универсальный чеклист диагностики Docker-проблем . Общий принцип диагностики Большинство проблем с Docker можно найти, последовательно проверив: статус контейнеров логи контейнеров сетевые настройки использование ресурсов конфигурацию Docker Compose Чаще всего проблема обнаруживается уже на втором шаге — в логах . Шаг 1 — Проверить контейнеры Сначала нужно убедиться, что контейнер действительно запущен. docker compose ps или docker ps Пример результата: NAME STATUS site_nginx Up site_php Exited (1) site_mysql Up Если контейнер имеет статус: Exited это означает, что приложение внутри контейнера завершилось с ошибкой. Шаг 2 — Проверить логи Логи — главный источник информации о проблеме. docker compose logs Пример: docker compose logs php Если контейнер только что перезапустился, удобно смотреть логи в реальном времени: docker compose logs -f php Шаг 3 — Проверить порты Если сервис работает, но недоступен извне, нужно проверить проброс портов. docker ps Пример: 0.0.0.0:8080->80/tcp Это означает: сервер:8080 → контейнер:80 Если порт не указан — он не открыт наружу. Шаг 4 — Проверить сеть контейнеров Если сервисы не видят друг друга, нужно проверить Docker-сети. docker network ls Проверить контейнеры в сети: docker network inspect Шаг 5 — Проверить соединение внутри контейнера Иногда нужно зайти внутрь контейнера. docker compose exec sh После этого можно проверить соединение. Пример проверки базы данных: ping mysql или nc -zv mysql 3306 Шаг 6 — Проверить ресурсы Если сервер перегружен, контейнеры могут работать нестабильно. Проверить использование ресурсов: docker stats Проверить использование диска: docker system df Шаг 7 — Проверить конфигурацию Compose Ошибки в docker-compose.yml могут привести к неправильному запуску контейнеров. Проверить конфигурацию: docker compose config Эта команда покажет итоговую конфигурацию после обработки переменных. Частые причины проблем Ошибка в конфигурации Неправильный YAML или пропущенная переменная. Решение: docker compose config Порт уже используется Ошибка: Bind for 0.0.0.0:80 failed Проверить процесс: sudo lsof -i :80 Контейнер падает после запуска Проверить логи: docker compose logs Контейнеры не видят друг друга Проверить сеть: docker network inspect Закончился диск Проверить: docker system df Очистить Docker: docker system prune -f Быстрый алгоритм диагностики 1 Проверить контейнеры docker compose ps 2 Проверить логи docker compose logs 3 Проверить порты docker ps 4 Проверить сеть docker network inspect 5 Проверить ресурсы docker stats 6 Проверить конфигурацию docker compose config Мини-чеклист диагностики Если сервис не работает: контейнер запущен? есть ли ошибки в логах? открыт ли нужный порт? контейнеры находятся в одной сети? хватает ли ресурсов серверу? правильная ли конфигурация Compose?