Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

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.

Полезные материалы
Рекомендуем