Описание
Лог 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