По-умолчанию в Docker для всех контейнеров устанавливается режим логирования json-file, т.е. весь STDOUT каждого контейнера будет писаться в файл. В целях отладки это может быть полезно, однако большой поток логов и их запись на диск может занять больше ресурсов, чем полезная нагрузка. Достаточно спорное решение, особенно для тех, кто имел опыт работы с другими системами контейнеризации, например, с Proxmox.
Чтобы отключить логирование контейнеров нужно создать, либо отредактировать файл /etc/docker/daemon.json добавив в него строки:
{ "log-driver": "none" }
После чего потребуется перезапуск docker и всех контейнеров:
service docker restart
Проверить и посмотреть текущие настройки журналирования можно так:
docker info | grep 'Logging Driver'
Проверить драйвер логирования для запущенного контейнера можно с помощью команды:
docker inspect -f '{{.HostConfig.LogConfig.Type}}' <CONTAINER>
Чтобы создать новый контейнер с определённым механизмом логирования нужно воспользоваться опцией —log-driver, например:
docker run --log-driver none alpine
В docker-compose версии 2 и 3 это будет выглядеть так:
mariadb: image: mariadb logging: driver: none
А для старой первой версии так:
log_driver: none
Ещё одна хитрость при использовании docker-compose: можно создать глобальные шаблоны до объявления сервисов:
x-logging: &default-logging driver: none x-logging: &debug-logging driver: json-file
А затем в сервисе ссылаться на имя шаблона:
logging: *default-logging
logging: *debug-logging
Подробнее о конфигурации файла docker-compose.yml смотрите в документации: https://docs.docker.com/compose/compose-file/
Возможность изменить драйвер логирования у запущеного контейнера не предусмотрена. Если нужно его изменить — то только пересоздание контейнера с нужными настройками.
Помимо значений none и json-file поддерживаются и другие: syslog, journald, gelf, fluentd, awslogs, splunk, etwlogs, gcplogs, logentries. А так же имеется возможность создавать создать плагин, реализующий нужную вам логику журналирования.
Подробнее о настройке логирования контейнеров смотрите в официальной документации: https://docs.docker.com/config/containers/logging/configure/