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

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

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

Траблшутинг утечек диска в Docker: docker system prune и dangling layers

Обновлено: 21.08.2026
  • Ошибка no space left on device при создании новых контейнеров или сборке образов.
  • Каталог /var/lib/docker/overlay2 занимает сотни гигабайт дискового пространства.
  • Разрастание JSON-файлов логов контейнеров в каталоге /var/lib/docker/containers/.
  • Накопление неиспользуемых anonymous volumes и кэша Docker BuildKit.

1. Анализ потребления дискового пространства Docker

docker system df -v

2. Глубокая очистка неиспользуемых ресурсов

Удаление всех остановленных контейнеров, неиспользуемых сетей, висячих (dangling) слоев и кэша сборщика:

docker system prune -a --volumes -f

3. Ограничение размера логов в /etc/docker/daemon.json

Предотвратите бесконечное разрастание логов контейнеров, настроив ротацию драйвера json-file:

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

Перезапустите демон:

systemctl restart docker

4. Автоматизированный скрипт очистки по расписанию

Создайте файл /etc/cron.weekly/docker-cleanup:

#!/usr/bin/env bash
set -euo pipefail
# Очистка образов старше 168 часов (7 дней) и dangling build cache
docker image prune -a --force --filter "until=168h"
docker builder prune -a --force --filter "until=168h"
docker volume prune -f
chmod +x /etc/cron.weekly/docker-cleanup
Практический опыт инженера: Никогда не удаляйте папки внутри /var/lib/docker/overlay2 напрямую через rm -rf. Это необратимо повреждает локальную базу метаданных containerd/dockerd и потребует полной переустановки движка.

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

Почему после docker system prune размер папки /var/lib/docker/overlay2 не уменьшился?

Файлы overlay2 принадлежат работающим контейнерам. Если контейнер активно пишет временные файлы в свой root-слой вместо volume или tmpfs, место освободится только после его пересоздания.

Опасно ли выполнять команду docker volume prune?

Команда удаляет ВСЕ тома, которые в данный момент не примонтированы к работающим или остановленным контейнерам. Если у вас есть резервные отвязанные тома с базами данных, они будут стерты безвозвратно.