Описание
Лог stdout контейнеров по умолчанию сохраняется в файлы для каждого контейнера и не ротируется, что может привести к исчерпанию места на диске.
По умолчанию они располагаются в папках:
/var/lib/docker/containers/*/
Вручную удалить все логи можно командой:
truncate -s 0 /var/lib/docker/containers/*/*-json.log
Настройка ротации логов
Ротация логов сервисом docker
Данный способ является предпочтительным.
Данный способ работает, если используется JSON формат файла логов. Проверить можно командой:
docker info | grep "Logging Driver"
В выводе должно быть:
Logging Driver: json-file
Открыть (или при необходимости создать) файл:
/etc/docker/daemon.json
Добавить описание условий ротации:
{ "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "10" } }
Выполнить перезапуск docker:
systemctl restart docker
Выполнить команду
docker-compose down
Запусть контейнер
docker-compose up -d
Проверить, что настройки применились можно командой:
docker container inspect <имя контейнера> | grep LogConfig -A6
Вывод команды:
"LogConfig": { "Type": "json-file", "Config": { "max-file": "10", "max-size": "10m" } },
Ротация логов с помощью настроек docker-compose.yml
Открыть файл:
docker-compose.yml
Добавить настройки логирования (потребуется указать настройки для каждого контейнера):
version: "3" services: <имя сервиса>: logging: driver: "json-file" options: max-size: 10m max-file: "10" image: hub.eltex-co.ru/softwlc/eltex-<имя образа докер>:${SWLC_VERSION}
Перезапустить контейнер:
docker-compose down
docker-compose up -d