Как смотреть логи Docker контейнера: docker logs --tail 100 -f
Как понять, что происходит внутри Docker-контейнера?
Когда контейнер работает нестабильно, отвечает с задержками или выдает внутренние ошибки, единственный способ диагностики — чтение его журналов (логов). В отличие от стандартных программ, Docker перехватывает потоки вывода приложения stdout и stderr и объединяет их в единый журнал, доступный через команду docker logs.
Сравнение режимов просмотра логов:
| Команда | Что делает | Когда использовать |
|---|---|---|
docker logs <name> | Выводит весь огромный лог с момента создания контейнера | Только для новых контейнеров (иначе зависнет консоль) |
docker logs --tail 100 -f | Показывает последние 100 строк и держит поток открытым | Основной способ живой отладки |
docker logs --since 10m | Показывает события за последние 10 минут | Для анализа недавних сбоев и ошибок |
Практические команды работы с логами Docker
1. Просмотр последних 100 строк и слежение «на лету» (-f)
docker logs --tail 100 -f my_container_name(Ключ
-fоставляет консоль в режиме реального времени: как только в приложении произойдет событие, оно мгновенно появится на экране. Для выхода нажмите Ctrl + C).2. Просмотр логов за конкретный интервал времени (--since)
# Показать логи за последние 15 минут: docker logs --since 15m my_container_name # Показать логи с точного времени: docker logs --since "2025-02-23T10:00:00" my_container_name3. Добавление меток точного времени (Таймстампы)
Если само приложение не пишет дату и время в строках логов, добавьте флаг -t:
docker logs -t --tail 50 my_container_name4. Поиск ошибок через grep
docker logs --tail 500 my_container_name 2>&1 | grep -i "error"
Частые вопросы (FAQ)
Почему при выполнении docker logs терминал зависает на несколько минут?
Если контейнер работает много месяцев, объем лога может достигать десятков гигабайт. Команда без ключа --tail пытается выгрузить весь файл целиком в консоль. Всегда используйте --tail 100.
Как посмотреть логи всех сервисов в Docker Compose одновременно?
Перейдите в каталог с файлом docker-compose.yml и выполните: docker compose logs --tail 50 -f.
Куда Docker сохраняет файлы логов на сервере?
Они хранятся в JSON-файлах в системном каталоге /var/lib/docker/containers/<CONTAINER_ID>/<CONTAINER_ID>-json.log.
Почему команда docker logs выдает ошибку: configured log driver does not support reading?
Это происходит, если в daemon.json настроена отправка логов во внешний сервис (например, syslog, fluentd или awslogs). В этом случае логи нужно смотреть в соответствующей внешней системе мониторинга.