Скидка 50% на все тарифы, ограниченное время. От $2.48/mo
9 мин чтения
Инструменты разработчика и DevOps

Простое руководство по логам Docker Compose: как просматривать и управлять

Ада Лавгуд By Ада Лавгуд 9 мин. чтения Обновлено 23 февраля 2025 г.
логи docker

Хотите знать, что приложения Docker делают за кулисами? Разберёмся с журналами - скрытым окном в работу ваших контейнеров, которое фиксирует каждое их действие. Журналы незаменимы при отладке. Но сначала кратко вспомним, что такое Docker и Docker Compose.

Docker позволяет упаковывать приложения в изолированные контейнеры и запускать их практически на любой операционной системе без установки зависимостей. По сути, каждое приложение помещается в отдельный контейнер и работает одинаково в любой среде. Понимание принципов работы контейнеров - необходимая основа перед изучением Docker Compose. Поэтому рекомендуем сначала прочитать нашу статью о преимуществах контейнеризации.

Docker Compose входит в состав Docker и упрощает разработку многоконтейнерных приложений: он объединяет их сервисы, сети и хранилища в единую конфигурацию. Логи контейнеров Docker и логирование Docker Compose дают разработчикам полную картину того, что происходит внутри каждого контейнера.

Хотите разобраться в логах Docker Compose? Вы попали по адресу. В этой статье мы разберём основы логов Docker Compose и рассмотрим более сложные сценарии использования. Узнайте, как эффективно применять Docker Compose в своих проектах.

Зачем нужны журналы Docker Compose

Представьте: разработчик запускает приложение через Docker, не настроив логирование. Сначала всё работает нормально. Но вскоре пользователи начинают сталкиваться с ошибками, и приложение тормозит. Без логов Docker невозможно понять, что происходит внутри контейнеров. Логи Docker Compose - это подробная летопись жизни этих контейнеров. Они фиксируют каждое событие, что критически важно для диагностики и устранения проблем.

Разработчик или системный администратор должен понимать, что происходит внутри многоуровневых приложений и между их компонентами. Именно здесь логи Docker Compose становятся незаменимым инструментом. Зачем они нужны?

  • Отладка и устранение неполадок

Если приложение работает некорректно или выдаёт ошибки, логи docker - первое, куда стоит смотреть. Изучив их, разработчик может точно определить источник проблемы: будь то баг в коде, ошибка конфигурации или нехватка ресурсов.

  • Мониторинг работоспособности приложений

Регулярный мониторинг логов приложения позволяет оценить общее состояние сервисов. Логи выявляют ранние признаки неполадок: повторяющиеся ошибки, замедление ответов. Своевременное обнаружение таких паттернов помогает предотвратить серьёзные проблемы в будущем.

  • Аудит и соответствие требованиям

Для приложений, которые должны соответствовать определённым стандартам, логи docker - первое доказательство того, что приложение соблюдает установленные требования. Кроме того, логи незаменимы для контроля авторизованной и несанкционированной активности.

  • Оптимизация

Логи содержат данные о производительности и являются ценным источником для оптимизации приложений. Например, разработчики могут выявить медленные запросы, неэффективные участки кода или недоиспользуемые ресурсы.

Создание Docker-рецепта: развёртывание веб-сервера

В этом разделе мы вместе создадим Docker-рецепт. Для начала работы с логами Docker Compose нам нужно что-то развернуть. Используем в качестве примера веб-сервер. Чтобы создать Dockerfile, выполните команду nano файл Dockerfile в нужной директории на вашем VPS со следующим содержимым и сохраните файл:

 

FROM nginx:alpine
RUN rm /usr/share/nginx/html/index.html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Что делает каждая строка этого кода?

  • Начнём с лёгкого базового образа, nginx:alpine.
  • Затем удалим стандартную страницу приветствия Nginx.
  • После этого убедимся, что веб-сервер слушает порт 80.
  • Наконец, запустим сервер Nginx с помощью CMD.

Теперь наш Dockerfile готов, и мы переходим к следующему шагу — созданию файла Docker Compose. Вот структура файла docker-compose.yml :

version: '3.8'
services:
web:
build: .
ports:
- "8080:80"
volumes:
- ./index.html:/usr/share/nginx/html/index.html

Разберём каждую часть подробнее:

  • Используем версию 3.8.
  • В следующей строке назовём наш сервис "web“.
  • Затем укажем Docker собрать наш веб-сервер из текущей папки.
  • Связываем порт 8080 на хосте с портом 80 в контейнере, чтобы веб-сервер мог принимать соединения.
  • Наконец, в разделе volumes настраивается маппинг index.html с диска хоста в контейнер. Позже вы можете создать index.html файл с любым содержимым и разместить его там, где находятся файлы Dockerfile и docker-compose.yml .

Теперь запустим наш контейнер Docker с помощью Docker Compose. Просто выполним команду docker-compose up.

запуск контейнера Docker с помощью Docker Compose

После выполнения команды docker-compose up Docker загрузит нужные образы из интернета и настроит их в соответствии с нашими конфигурационными файлами.

Чтобы проверить, работает ли веб-сервер, откройте браузер, введите IP-адрес вашего VPS и обратитесь к порту 8080.

веб-страница в Docker-контейнере

К слову, вы также можете использовать docker-compose up -d чтобы запустить контейнер в фоновом режиме.

Просмотр логов через Docker Compose

Веб-сервер готов к работе. Он уже генерирует логи и сохраняет их для последующего использования. Доступ к логам Docker Compose необходим для диагностики и мониторинга. Как же их просматривать? Для этого используется команда журналы docker-compose Убедитесь, что вы находитесь в папке с файлом конфигурации, и выполните эту команду.

Просмотр логов через Docker Compose

Иногда нужно следить за логами в режиме реального времени по мере их поступления. Добавьте флаг -f в конец предыдущей команды и выполните docker-compose logs -f.

Просмотр логов через Docker Compose

Некоторые приложения на базе Docker могут не включать временны́е метки в логи. В таком случае используйте docker-compose logs -t чтобы добавить время записи для каждой строки лога.

Просмотр логов через Docker Compose

Логи Docker также позволяют выводить только последние записи. Для этого используйте docker-compose logs –tail 10 чтобы просмотреть последние 10 записей лога. Команда tail в Docker Compose, как и docker logs tail, особенно удобна, когда нужно быстро проверить последние события, не листая весь журнал целиком.

просмотр логов с помощью Docker Compose

Основная задача Docker Compose — создание многоконтейнерных приложений. Поэтому может потребоваться просмотр логов конкретного сервиса. Для этого используйте docker-compose logs -f SERVICE, заменив SERVICE на реальное имя вашего сервиса.

просмотр логов с помощью Docker

Логирование в Docker

Экосистема Docker может усложняться по мере роста приложений, особенно в крупных окружениях. Каждый контейнер генерирует собственные логи. За их получение, доставку и хранение отвечает механизм, известный как Logging Driver. По умолчанию Docker использует файлы JSON в качестве Logging Driver, однако поддерживает и другие драйверы — у каждого есть свои преимущества и ограничения.

Логи играют ключевую роль в разных задачах: от диагностики проблем до оптимизации производительности системы. Ниже рассмотрим два основных сценария использования логов контейнеров:

  • Мониторинг: Основная задача логов — мониторинг. Они отражают общее состояние наших контейнеризованных приложений.
  • Устранение неполадок: При возникновении проблем логи помогают обнаружить сбои в работе приложения.

Поскольку docker logs и docker compose logs генерируются непрерывно, они могут заполнить всё доступное хранилище VPS. Поэтому нам нужна стратегия управления дисковым пространством — политика ротации логов. Чтобы создать и применить её, вернитесь к файлу docker-compose.yml и откройте его. Затем добавьте секцию logging со следующей конфигурацией:

version: '3.8'
services:
web:
build: .
ports:
- "8080:80"
volumes:
- ./index.htm:/usr/share/nginx/html/index.htm
logging:
driver: json-file
options:
max-size: "200k"
max-file: "10"

Вы можете в любой момент настроить max-size и max-file под свои нужды.

Модели доставки логов Docker

В более сложных окружениях инженеры могут выбрать другую модель логирования вместо стандартных драйверов JSON — например, Syslog, fluentd и другие. Тем не менее важно помнить: драйвер JSON-file подходит для большинства сценариев логирования, и отклоняться от режима по умолчанию, как правило, нет необходимости.

В зависимости от архитектуры вашего приложения или требований организации вам может потребоваться использовать централизованные решения для сбора логов — агрегаторы логов. Такие сервисы, как Elasticsearch, Logstash, Kibana и другие, собирают логи из различных источников, объединяют, хранят и анализируют их в одном месте.

Кроме того, стоит хранить логи в более экономичных хранилищах. Представьте ситуацию: ваше хранилище VPS работает на быстрых и дорогих дисках. Держать там логи, которые могут понадобиться лишь в будущем, попросту нерентабельно.

Существует множество моделей логирования, у каждой из которых есть свои плюсы и минусы. Важно тщательно оценить каждую из них и выбрать ту, которая соответствует вашим конкретным задачам.

Хостинг Linux VPS

Выберите экономный или премиальный Linux VPS для хостинга сайта или удалённого рабочего стола по минимальной цене. VPS работает на базе Linux KVM для повышения эффективности и использует производительное железо с хранилищем NVMe SSD для максимальной скорости.

Читать далее

Заключение

Понимание логов Docker Compose — ключ к эффективному управлению и отладке приложений Docker. Умение работать с этими логами улучшает диагностику и повышает производительность и безопасность вашего приложения. Независимо от того, занимаетесь ли вы разработкой или администрированием систем, логи Docker Compose — незаменимый инструмент для контроля над контейнерами.

Часто задаваемые вопросы

Как фильтровать логи Docker Compose по времени?

Docker Compose не предоставляет встроенного способа фильтровать логи по времени. Однако вы можете фильтровать их, передавая вывод через grep для поиска по шаблону. Например: docker-compose logs | grep "2023-04-06" — замените "2023-04-06" на нужную вам дату или временной шаблон.

Как остановить контейнеры, запущенные через Docker Compose?

Перейдите в директорию с файлом docker-compose.yml и выполните команду docker-compose down.

Как удалить файлы логов вручную?

Вместо настройки ротации логов в файле docker-compose.yml можно вручную удалить файлы логов Docker JSON из /var/lib/docker/containers/<container_id>/. Перед этим определите ID нужного контейнера Docker с помощью команды docker ps -a.

Можно ли просматривать логи Docker в режиме реального времени? 

Да. Для этого используйте команду docker logs с флагом -f или --follow. Она выведет логи Docker в режиме реального времени.

Поделиться

Другие статьи блога

Читать дальше.

Металлический контейнер под светящимся неоново-голубым каркасным куполом — на фоне глубокого синего цвета размещены заголовок статьи и логотип Cloudzy.
Инструменты разработчика и DevOps

Главные ошибки в безопасности Docker, которых стоит избегать в 2026 году

Docker можно использовать в продакшене месяцами без единой видимой проблемы. Контейнеры запускаются, приложения отвечают, всё работает. Но стоит оставить открытый порт или неверно настроить права доступа — и

Рекса СайрусРекса Сайрус 15 мин. чтения
3D-структура из светящихся синих кубов, символизирующая контейнеры Docker, рядом с текстом «Portainer vs Yacht: какой UI для Docker выбрать» и логотипом Cloudzy.
Инструменты разработчика и DevOps

Portainer vs Yacht: какой UI для Docker выбрать в 2026 году?

Управление контейнерами Docker через CLI хорошо работает для простых конфигураций, но плохо масштабируется. По мере роста числа контейнеров отслеживание состояний, логов и обновлений вручную становится всё сложнее

Рекса СайрусРекса Сайрус 13 мин. чтения
Инструменты непрерывной интеграции
Инструменты разработчика и DevOps

Лучшие CI/CD-инструменты для оптимизации DevOps-процессов в 2026 году

&nbsp; Разработка программного обеспечения меняется быстрее, чем когда-либо. Чтобы не отставать, стоит освоить методологии DevOps и Agile

Ада ЛавгудАда Лавгуд 11 мин. чтения

Готовы к деплою? От $2.48/мес.

Независимый облачный провайдер с 2008 года. AMD EPYC, NVMe, 40 Gbps. Возврат средств в течение 14 дней.