Docker LinuxWindows (Docker Desktop)macOS (Docker Desktop)

Docker сообщает no space left on device при свободном месте: куда смотреть

  • Обновлено
  • Чтение ≈ 4 минуты

Краткий ответ

Сообщение ENOSPC иногда относится к разделу Docker Root Dir, виртуальному диску Docker Desktop, ограничению writable layer или исчерпанию inode, а не к тому диску, который вы открыли в проводнике.

В этой статье
  1. Что означает ошибка и при каких условиях возникает
  2. Как различить причины
  3. Пошаговая диагностика и исправление
  4. Как проверить результат и что делать, если проблема осталась

#Что означает ошибка и при каких условиях возникает

Проверьте фактическое хранилище Docker, квоту виртуального диска, inode и кэш сборки до удаления образов или томов. Сообщение ENOSPC иногда относится к разделу Docker Root Dir, виртуальному диску Docker Desktop, ограничению writable layer или исчерпанию inode, а не к тому диску, который вы открыли в проводнике.

#Как различить причины

Возможная причинаКак узнатьЧто делать
Заполнен другой раздел или виртуальный дискDocker Engine использует свой каталог данных, Docker Desktop — виртуальную Linux-систему и файл диска.Основной системный раздел свободен, но docker info показывает другой Root Dir или виртуальное хранилище полно.Найти и проверить фактический Docker storage, не переносить вручную.
Исчерпаны inodeВ Linux каждый файл и каталог расходует inode; множество маленьких файлов исчерпывает их раньше байтов.В df -i IUse% близко к 100%, тогда как df -h показывает свободные гигабайты.Найти источник множества файлов, согласовать адресную очистку.
Занято много места образами, слоями и кэшемСтарые образы, остановленные контейнеры и кэш сборки занимают внутреннее место.docker system df -v показывает большие значения Build Cache или Images.Проверить использование и очищать только заведомо ненужное после сверки зависимостей.
Ограничение конкретного тома или приложенияЗаданная квота на том, tmpfs или файлы журнала может приводить к ENOSPC отдельно от корня Docker.Ошибка касается только определённой записи и повторяется при небольшой нагрузке.Проверить Mounts, размер tmpfs и политику хранения журналов.

#Пошаговая диагностика и исправление

  1. Сохраните вывод ошибки и прекратите неудачные повторыЗапишите команду, при которой возникает no space left on device: docker build, docker pull, запуск базы или запись из приложения. Не выполняйте автоматическое удаление всех образов/томов и не расширяйте раздел без снимка/копии. Если база данных сигнализирует о нехватке места, остановите операции записи контролируемым способом и уведомите администратора, чтобы не усугубить повреждение данных.
  2. Определите, где работает DockerОткройте терминал: Windows — «Пуск» → PowerShell, macOS — «Программы» → «Утилиты» → «Терминал», Linux — терминал рабочего стола. Выполните docker version и docker info --format "{{.DockerRootDir}}". Ответ /var/lib/docker относится к Linux-движку, но на Docker Desktop это путь внутри его виртуальной системы, а не обычная папка диска Windows. Если команда выдаёт Cannot connect to the Docker daemon, сначала запустите Docker Desktop или проверьте службу с администратором.
  3. Получите сводку использования без удаленияВыполните docker system df -v и запишите разделы Images, Containers, Local Volumes и Build Cache. Команда ничего не удаляет. Значение Reclaimable — оценка доступного к очистке, а не приказ удалять; образы могут понадобиться для отката. Если вывод слишком большой, сохраните его локально и не публикуйте имена частных образов.
  4. В Linux отдельно проверьте место и количество inodeЕсли Docker Engine установлен непосредственно на Linux, выполните df -h и df -i. По выводу docker info определите файловую систему, где расположен Docker Root Dir, и найдите соответствующую строку в df. -h показывает объём в удобном формате, -i — использование inode; 100% по любому из этих показателей объясняет ENOSPC. Команды выполняются от обычного пользователя и не изменяют диск.
  5. В Docker Desktop проверьте настройки выделенного дискаОткройте Docker Desktop → Settings (значок шестерёнки) → Resources. В зависимости от ОС и версии там находятся ограничения виртуального диска и его расположение; на некоторых версиях конкретный пункт отличается. Сверьте выделенный размер и свободное пространство хоста. Не переносите образ виртуального диска вручную через Проводник/Finder; делайте изменения только штатным интерфейсом после резервного копирования и проверки достаточности места.
  6. Найдите конкретный источник расходаЕсли ENOSPC возникает при сборке, смотрите Build Cache и логи этапа, а не сразу удаляйте тома. Если ошибка при записи приложения, проверьте docker inspect для его Mounts и используемые каталоги, квоты и tmpfs. При больших Local Volumes сначала выясните их назначение и сделайте логические резервные копии баз. Не трогайте каталоги Docker Root Dir вручную: это может повредить метаданные движка.
  7. Освободите место адресно, а не общей очисткойСначала удалите или перенесите обычные ненужные файлы вне Docker на нужном разделе, если это безопасно. Если именно кэш сборки велик и у вас есть разрешение, после оценки последствий используйте интерактивный docker builder prune без -a; внимательно прочитайте список/запрос на подтверждение — последующая сборка будет дольше. Не используйте --volumes, docker system prune -a и общую очистку на работающем сервере без учёта зависимостей.
  8. Повторите исходное действие и оцените местоПосле адресного освобождения снова запустите docker system df -v, df -h и df -i где применимо; затем повторите только ту безопасную операцию, на которой была ошибка, например учебную сборку. Ожидается отсутствие ENOSPC и сохранение доступности приложения. Если место не увеличилось, исследуйте квоты, виртуальный диск и файловую систему с администратором; не повторяйте разрушительную очистку.
  9. Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
    Выберите подходящий вариант — это не команды для последовательного выполнения
    Вариант 1Команды чтения: проверяют связь с движком, расположение его хранилища и использование диска.
    Linux · Терминал (Bash)Команда
    Команды чтения: проверяют связь с движком, расположение его хранилища и использование диска. Docker Root Dir на Desktop находится внутри виртуальной системы.
    docker version
    docker info --format "{{.DockerRootDir}}"
    docker system df -v
    Вариант 2Только для терминала Linux-хоста, на котором действительно находится хранилище Docker.
    Linux · Терминал (Bash)Команда
    Только для терминала Linux-хоста, на котором действительно находится хранилище Docker. Первая команда показывает байты, вторая — inode. Для Windows PowerShell не предназначены.
    df -h
    df -i
    Вариант 3Удаляет неиспользуемый кэш сборки после подтверждения.
    Linux · Терминал (Bash)С осторожностью
    Удаляет неиспользуемый кэш сборки после подтверждения. Может удлинить будущие сборки, не является первой диагностической командой. Не запускать без оценки используемых сборок и согласования на сервере.
    docker builder prune

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

#Как проверить результат и что делать, если проблема осталась

Успех — исходная операция завершается без ENOSPC, свободное место или inode достаточны именно в файловой системе Docker, приложения и данные доступны. Если нет, сохраните отчёт docker system df -v, путь DockerRootDir, показания df и тип окружения и передайте администратору.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.