Логи — один из основных инструментов диагностики Docker-контейнеров. С их помощью можно понять, почему приложение не запускается, возвращает ошибки или неожиданно завершается.
Основная команда:
docker logs имя_контейнера
Посмотреть логи
Сначала узнаем имя контейнера:
docker ps
Затем:
docker logs web
Если контейнер уже остановлен, его логи тоже можно посмотреть.
Следить за логами в реальном времени
Используйте:
docker logs -f web
Флаг -f подключает поток логов.
Остановить просмотр:
Ctrl+C
Контейнер при этом не останавливается.
Последние строки
Чтобы посмотреть только последние строки:
docker logs --tail 100 web
Логи с временными метками
docker logs -t web
Это удобно при анализе последовательности событий.
Логи за определенный период
Можно использовать:
docker logs --since 1h web
или:
docker logs --since 2026-08-30T10:00:00 web
Docker Compose logs
Для Compose:
docker compose logs
Конкретный сервис:
docker compose logs web
В реальном времени:
docker compose logs -f web
Docker рекомендует Compose-команды для просмотра логов сервисов, а docker compose logs поддерживает потоковый просмотр.
Почему приложение может не писать логи
Docker не создает магические логи приложения.
Чтобы docker logs показывал полезную информацию, приложение обычно должно писать сообщения в stdout/stderr.
Если приложение пишет исключительно в файл внутри контейнера, docker logs может ничего интересного не показать.
Пример
Плохой сценарий:
/app/logs/app.log
Все сообщения записываются в файл внутри контейнера.
Более удобный для контейнерной среды подход — выводить логи приложения в stdout/stderr и централизованно собирать их на уровне инфраструктуры.
Логи и перезапуск контейнера
Если контейнер постоянно перезапускается:
docker ps
может показывать частые рестарты.
Проверяем:
docker logs web
Частая причина:
- ошибка конфигурации;
- неправильная переменная окружения;
- недоступная база;
- ошибка запуска приложения.
Логи и Docker Compose
Для проекта:
docker compose ps
Затем:
docker compose logs -f
Можно получить логи всех сервисов.
Например:
nginx
app
postgres
redis
Это удобно для поиска проблем взаимодействия.
Как читать логи
Ищите:
ERROR
FATAL
Exception
Connection refused
Permission denied
Timeout
Authentication failed
Но не стоит ограничиваться поиском слова ERROR. Иногда важное событие находится непосредственно перед ошибкой.
Ограничение размера логов
На production важно контролировать объем логов.
Если приложение пишет огромное количество данных, логи могут занимать много места.
Настройка конкретного logging driver и его параметров зависит от среды Docker и требований инфраструктуры.
Логи Nginx
Для Nginx полезно анализировать:
- HTTP-коды;
- IP клиентов;
- URL;
- upstream errors;
- время ответа.
Подробнее — в статье «Docker для Nginx».
Логи PostgreSQL
Для базы данных интересны:
- ошибки подключения;
- authentication errors;
- долгие запросы;
- проблемы с диском;
- ошибки восстановления.
Подробнее — в статье «Docker для PostgreSQL».
Логи Redis
Redis может сообщать:
- проблемы persistence;
- ошибки конфигурации;
- проблемы памяти;
- события запуска и остановки.
Подробнее — в статье «Docker для Redis».
Типичные проблемы
docker logs пустой
Возможно, приложение пишет логи в файл, а не stdout/stderr.
Слишком много логов
Нужны ограничения, ротация или централизованная система логирования.
Контейнер постоянно перезапускается
Изучите логи и restart policy.
Логи потерялись
Контейнерные логи нельзя считать заменой полноценной системе хранения логов.
Итог
docker logs — одна из первых команд, которую стоит использовать при диагностике контейнера.
Минимальный набор:
docker ps
docker logs container
docker logs -f container
docker logs --tail 100 container
Читайте также:



