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

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

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

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) и приведет к полной неработоспособности демона.

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