Уменьшение размера логов Docker: Практическое руководство

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


Проблема больших логов Docker

Логи контейнеров Docker по умолчанию сохраняются в формате JSON и могут занимать много места на сервере, если не контролировать их. Например, контейнеры, которые не были пересозданы в течение длительного времени, могут накопить огромные файлы логов. Пример: на одном сервере лог-файл Docker вырос до 14 ГБ за год.

Проверка размеров логов Docker

Логи Docker хранятся в папке /var/lib/docker/containers/id>/id>-json.log. Чтобы узнать, сколько места занимают эти файлы, можно воспользоваться следующей командой:


find /var/lib/docker/containers/ -name "*json.log" | xargs du -h | sort -hr
    

Эта команда покажет размер всех логов контейнеров, отсортированных от большего к меньшему.

Как определить контейнер по ID

Если вы хотите узнать, какой контейнер генерирует большой лог, можно воспользоваться командой:


docker inspect --format='{{.Name}}' 
    

Она покажет имя контейнера по его ID. Это поможет вам идентифицировать источник больших логов.

Очистка логов Docker

Чтобы очистить содержимое лог-файла без перезапуска контейнера, можно использовать команду:


truncate -s 0 /var/lib/docker/containers/id>/id>-json.log
    

Эта команда обнулит содержимое файла, освобождая место на диске.

Настройка ротации логов Docker

Для предотвращения чрезмерного роста логов рекомендуется настроить ротацию логов. Это можно сделать, добавив параметры в конфигурационный файл Docker daemon (/etc/docker/daemon.json):


{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
    

Этот пример ограничивает размер одного файла лога до 10 МБ и разрешает хранить до трёх архивных версий логов. После внесения изменений нужно перезапустить Docker:


sudo systemctl restart docker
    

Применение настроек к существующим контейнерам

Чтобы изменения применились к существующим контейнерам, их нужно пересоздать. Для этого можно остановить и удалить контейнер с помощью команды:


docker rm -f 
    

И затем запустить контейнер заново. Если вы используете Docker Compose, остановите и удалите все ресурсы с помощью:


docker compose down
    

Затем запустите приложение командой:


docker compose up -d
    

Заключение

Управление логами Docker — это важный аспект поддержания серверов в порядке и предотвращения неконтролируемого роста файлов логов. Настройка ротации логов позволяет избежать переполнения дискового пространства и упрощает администрирование Docker-среды.

Блог НАЙС ОС

Блог НАЙС ОС — это платформа для пользователей и разработчиков, где публикуются статьи, руководства и новости о мире Linux. Основное внимание уделено использованию, настройке и оптимизации ОС, а также обзору новых функций и технологий, доступных в дистрибутиве НАЙС ОС.