Глиф Учебники

Как посмотреть логи контейнера

Справочник · Docker · 2 минуты чтения

Bash
docker logs web

Команда показывает всё, что программа в контейнере web напечатала на экран (в стандартный вывод и вывод ошибок) с момента создания контейнера. Работает и для остановленного контейнера — так ищут причину падения.

Полезные ключи

ЗадачаКоманда
Последние 100 строкdocker logs --tail 100 web
Следить за новыми строкамиdocker logs -f web
Последние 50 строк и дальше следитьdocker logs -f --tail 50 web
За последние 30 минутdocker logs --since 30m web
С отметками времениdocker logs -t web

Выход из слежения (-f) — Ctrl+C; контейнер при этом не останавливается. В --since и --until можно писать промежуток (10m, 2h) или дату и время (2026-11-05T10:00:00).

Искать по логу — через grep. Строки, которые программа писала в поток ошибок, docker logs тоже выдаёт в поток ошибок, а grep их не видит. Поэтому оба потока сводят в один:

Bash
docker logs web 2>&1 | grep -i error

Docker Compose

В папке проекта:

Bash
docker compose logs -f
docker compose logs --tail 50 wordpress

Без имени сервиса — логи всех сервисов вперемешку, каждая строка подписана именем сервиса.

Где хранятся логи

По умолчанию — в JSON-файле на хосте, по одному на контейнер. Путь показывает команда:

Bash
docker inspect --format '{{.LogPath}}' web

Обычно это /var/lib/docker/containers/<идентификатор>/<идентификатор>-json.log, где <идентификатор> — полный идентификатор контейнера; читать файл можно с sudo. При удалении контейнера (docker rm) удаляется и его лог.

Без ограничения такой файл растёт бесконечно и может занять весь диск. Ограничьте размер логов в /etc/docker/daemon.json (max-size, max-file) — как это сделать, описано в уроке Обновление и очистка места. Не очищайте файлы лога вручную, пока работает Docker.

Логи пустые

Логи самого Docker

Если не запускается сам Docker или контейнер не создаётся вовсе, смотрите журнал службы:

Bash
sudo journalctl -u docker --no-pager -n 50