SystemdDoctor
служба не работает docker диск частое

Docker: no space left on device при запуске контейнеров

Каталог /var/lib/docker растёт незаметно: образы, остановленные контейнеры, тома, кеш сборки. При заполнении раздела перестают запускаться контейнеры, а иногда и сам демон.

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

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

  1. Накопились неиспользуемые образы и остановленные контейнеры

    Docker ничего не удаляет сам. При частых сборках и обновлениях старые слои остаются на диске.

  2. Раздел с /var/lib/docker слишком мал

    На машинах с отдельным небольшим корнем каталог Docker заполняет его целиком.

  3. Журналы контейнеров не ограничены

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

Диагностика

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

Распределение занятого места по образам, контейнерам, томам и кешу сборки.

docker system df

Свободное место на разделе.

df -h /var/lib/docker

Что именно занимает место.

sudo du -sh /var/lib/docker/* | sort -h | tail

Решение

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

1. Накопились неиспользуемые образы и остановленные контейнеры
Почему происходит
Docker ничего не удаляет сам. При частых сборках и обновлениях старые слои остаются на диске.
Как проверить
Посмотрите занятое место по видам объектов.
docker system df
df -h /var/lib/docker
Как исправить
Удалите неиспользуемое. Команда с флагом тома удаляет и данные — применяйте осознанно.
docker system prune -a
# только при уверенности: docker system prune -a --volumes
2. Раздел с /var/lib/docker слишком мал
Почему происходит
На машинах с отдельным небольшим корнем каталог Docker заполняет его целиком.
Как проверить
Посмотрите размер раздела и занятое место.
df -h /var/lib/docker
sudo du -sh /var/lib/docker/* 2>/dev/null | sort -h | tail -5
Как исправить
Перенесите каталог данных на отдельный раздел через параметр data-root в daemon.json, остановив демон перед переносом.
3. Журналы контейнеров не ограничены
Почему происходит
По умолчанию журналы контейнеров растут без предела. Один болтливый контейнер может занять десятки гигабайт.
Как проверить
Найдите самые крупные файлы журналов контейнеров.
sudo du -sh /var/lib/docker/containers/*/*-json.log 2>/dev/null | sort -h | tail -5
Как исправить
Ограничьте размер журналов в daemon.json параметрами драйвера журналирования и перезапустите демон.
# /etc/docker/daemon.json
# {"log-driver":"json-file","log-opts":{"max-size":"50m","max-file":"3"}}

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

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

dockerd[1200]: error creating overlay mount to /var/lib/docker/overlay2/.../merged: no space left on device
containerd[1100]: failed to create shim task: OCI runtime create failed: write /sys/fs/cgroup/...: no space left on device

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

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

Источники

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