SystemdDoctor
служба не работает контейнеры диски логи

Журналы контейнеров заполнили диск

По умолчанию журналы контейнеров растут без ограничения и не ротируются. Один говорливый контейнер заполняет раздел за дни, после чего перестают работать все службы на машине, а не только он.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Ограничение размера журналов не задано

    Способ хранения журналов по умолчанию не ограничивает объём. Файлы растут, пока есть место.

  2. Журналы не убираются после удаления контейнера

    Остатки удалённых контейнеров занимают место. Очистка не выполняется сама.

  3. Контейнер пишет в журнал слишком много

    Отладочный вывод в контейнере даёт гигабайты за сутки. Ограничение размера прячет симптом, не убирая причину.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Сколько занимают образы, контейнеры и журналы.

sudo docker system df

Крупнейшие журналы контейнеров.

sudo du -sh /var/lib/docker/containers/*/*-json.log 2>/dev/null | sort -h | tail

Действующий способ хранения журналов.

sudo docker info 2>/dev/null | grep -i "Logging Driver"

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Ограничение размера журналов не задано
Почему происходит
Способ хранения журналов по умолчанию не ограничивает объём. Файлы растут, пока есть место.
Как проверить
Посмотрите размер журналов и настройки.
sudo du -sh /var/lib/docker/containers/*/*-json.log 2>/dev/null | sort -h | tail -5
sudo docker info 2>/dev/null | grep -i "Logging Driver"
Как исправить
Задайте предел размера и число файлов в настройках службы контейнеров. Настройка действует на новые контейнеры: существующие нужно пересоздать.
{
  "log-driver": "json-file",
  "log-opts": { "max-size": "50m", "max-file": "3" }
}
2. Журналы не убираются после удаления контейнера
Почему происходит
Остатки удалённых контейнеров занимают место. Очистка не выполняется сама.
Как проверить
Посмотрите занятое место по видам объектов.
sudo docker system df 2>/dev/null
Как исправить
Настройте периодическую очистку неиспользуемых объектов задачей по таймеру. Делать это вручную забывают.
3. Контейнер пишет в журнал слишком много
Почему происходит
Отладочный вывод в контейнере даёт гигабайты за сутки. Ограничение размера прячет симптом, не убирая причину.
Как проверить
Найдите самый говорливый контейнер.
sudo du -sh /var/lib/docker/containers/*/*-json.log 2>/dev/null | sort -h | tail -3
Как исправить
Снизьте подробность вывода в самом приложении. Ограничение размера при этом всё равно нужно как страховка.

Пример вывода

Журнал одного контейнера занял раздел. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

$ sudo du -sh /var/lib/docker/containers/*/*-json.log | sort -h | tail -2
1.2G    /var/lib/docker/containers/8f2a.../8f2a...-json.log
34G     /var/lib/docker/containers/c41b.../c41b...-json.log

dockerd[12300]: error writing log entry: write /var/lib/docker/containers/c41b/c41b-json.log: no space left on device

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация Docker: хранение журналов документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено контейнером с непрерывным выводом на малом разделе.
    собственная проверка, systemd 255
    сверено 15 сентября 2026