Docker logs: как смотреть и анализировать логи контейнеров - Компьюти
Logo КОМПЬЮТИ

Docker logs: как смотреть и анализировать логи контейнеров

Время на прочтение: 2 мин.

Логи — один из основных инструментов диагностики 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

Читайте также:


Читайте также:

Приглашаем поучаствовать в обсуждении статьи:

Комментариев 0