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

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

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

Оптимизация дисковых драйверов Docker: overlay2, fstrim и очистка кэша

Обновлено: 21.08.2026
  • Переполнение каталога /var/lib/docker/overlay2 (ошибка No space left on device).
  • Низкая скорость сборки и запуска контейнеров из-за фрагментации слоев хранилища.
  • Ошибки демона Docker при запуске на файловых системах без поддержки d_type.

1. Проверка используемого драйвера и файловой системы

docker info --format 'Storage Driver: {{.DriverStatus}}'

Убедитесь, что базовая ФС поддерживает d_type:

xfs_info /var/lib/docker | grep -o "ftype=1"

2. Конфигурация драйвера overlay2 в daemon.json

Создайте или отредактируйте /etc/docker/daemon.json:

{
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}
systemctl restart docker

3. Комплексная очистка неиспользуемых слоев и кэша

# Анализ занятого пространства
docker system df

# Безопасная очистка остановленных контейнеров, висячих сетей и образов
docker system prune -a --volumes -f

# Очистка кэша сборщика BuildKit
docker builder prune -a -f

4. Освобождение неиспользуемых блоков SSD через fstrim

fstrim -av
Практический опыт инженера: Для систем с интенсивной дисковой записью (БД, брокеры очередей) никогда не храните данные внутри слоя CoW (overlay2). Всегда используйте Named Volumes или Bind Mounts, работающие напрямую с файловой системой хоста.

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

Почему удаление файлов внутри работающего контейнера не освобождает место на хосте?

Overlay2 использует модель Copy-on-Write. Удаление файла в верхнем слое контейнера (Upperdir) создает специальный файл типа whiteout, который только скрывает файл из нижнего слоя (Lowerdir), не удаляя физические данные из базового образа.

Можно ли вручную удалять папки из /var/lib/docker/overlay2?

Категорически запрещено. Это разрушит внутреннюю базу данных метаданных Docker (/var/lib/docker/image/overlay2/layerdb) и приведет к полной неработоспособности демона.