Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
DOCKER_LOGS_DISK_OVERFLOW Linux / DevOps

Настройка сбора и ротации логов в Docker: json-file, journald и syslog

Обновлено: 21.08.2026
  • Дисковый раздел переполнен файлами /var/lib/docker/containers/*/*-json.log.
  • Команда docker logs долго открывается или вызывает деградацию производительности хоста.
  • Потеря системных логов контейнеров при аварийных перезапусках.

1. Глобальная настройка ротации логов в daemon.json

Отредактируйте /etc/docker/daemon.json для всех создаваемых контейнеров:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "50m",
    "max-file": "3",
    "compress": "true"
  }
}
systemctl restart docker

2. Использование оптимизированного драйвера 'local' (Docker 20.10+)

Драйвер local предотвращает блокировки ввода-вывода и автоматически включен на ротацию:

{
  "log-driver": "local",
  "log-opts": {
    "max-size": "100m",
    "max-file": "5"
  }
}

3. Индивидуальная настройка ротации в Docker Compose

services:
  app:
    image: my_app:latest
    logging:
      driver: "json-file"
      options:
        max-size: "20m"
        max-file: "2"
        compress: "true"

4. Экстренная очистка логов без остановки контейнера

truncate -s 0 /var/lib/docker/containers/*/*-json.log
Практический опыт инженера: По умолчанию Docker не ограничивает размер json-file логов, что неизбежно приводит к 100% заполнению диска в production. Всегда прописывайте max-size и max-file сразу после установки Docker Engine.

Частые вопросы (FAQ)

Почему нельзя удалять .log файлы командой rm?

Если удалить файл лога через rm, процесс демона Docker продолжит удерживать открытый файловый дескриптор, и дисковое пространство не освободится до перезапуска демона. Используйте truncate.

Будет ли работать команда docker logs при переключении на syslog или fluentd?

По умолчанию нет. Для сохранения поддержки docker logs добавьте опцию mode: non-blocking и max-buffer-size.