Найти в Дзене
ИТ разнообразно

Журналы Docker Compose: Руководство и лучшие практики. Часть 3.

Стратегии журналирования Docker Compose

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

  • Блокирующий

В этом режиме демон Docker может заблокировать контейнер, не позволяя ему записывать данные в драйвер журнала. Это особенно полезно, если драйвер журнала не может справиться с объёмом записываемых журналов. Однако, это также может вызвать проблемы, если заблокированный контейнер является важной частью вашего приложения.

  • Неблокирующий

Docker не будет блокировать контейнеры в этом режиме, даже если драйвер журнала не успевает за объёмом записываемых журналов. Вместо этого Docker будет буферизовать журналы и доставлять их, когда драйвер журнала будет готов. Однако, это может вызвать проблемы, если буфер журнала заполняется, что приводит к удалению журналов Docker.

Чтобы понять риск потери журнала в неблокирующем режиме, предположим, что у вас есть файл Docker Compose (docker-compose.yml), который определяет две службы: веб-сервер и базу данных. Веб-сервер регистрирует важную информацию на stdout или stderr внутри контейнера, и вы ожидаете, что эти журналы будут доступны для целей отладки или мониторинга.

version: '3'
services:
web:
build: .
ports:
- 8080:80
db:
image: mysql:latest
environment:
- MYSQL_ROOT_PASSWORD=password

Если вы запускаете службы с помощью команды docker-compose up -d в неблокирующем режиме (отсоединённом режиме), контейнеры будут работать в фоновом режиме. Однако, если вы не будете активно собирать или перенаправлять журналы в файл или систему журналирования, журналы не будут немедленно видимы или сохранены. Это может привести к потенциальной потере журнала.

Продолжение следует...

Перевод с некоторыми авторскими правками.

Автор оригинала: Squadcast.