
При работе с Docker администраторы и разработчики регулярно сталкиваются с нехваткой дискового пространства, миграцией окружений и аудитом содержимого серверов. В таких ситуациях ключевым становится понимание, где именно Docker размещает образы, какие каталоги задействованы и от чего зависит их фактическое расположение. Без этого знания невозможно корректно чистить хранилище, настраивать резервное копирование или переносить данные между хостами.
На Linux-серверах Docker использует строго определённую структуру каталогов, зависящую от выбранного драйвера хранения. Образы не существуют в виде единых файлов: они представлены наборами слоёв, метаданных и ссылок, распределённых внутри /var/lib/docker. Непонимание этой структуры часто приводит к ошибочным действиям – удалению нужных данных или, наоборот, сохранению «мертвых» слоёв, которые продолжают занимать место.
Локальные окружения на Windows и macOS устроены иначе. Docker Desktop запускает виртуальную машину, внутри которой и находится реальное хранилище образов. Это означает, что поиск файлов образов на уровне пользовательской файловой системы напрямую не даст результата. Для контроля и диагностики требуется использовать команды Docker и настройки самой платформы, а не стандартные средства просмотра каталогов.
В статье подробно разобрано, где физически хранятся образы Docker на сервере и локальном компьютере, как определить активный путь хранения, какие факторы на него влияют и какие действия допустимы без риска повредить рабочие контейнеры.
Фактический путь хранения образов Docker на Linux-сервере

На большинстве Linux-дистрибутивов Docker по умолчанию размещает все данные, включая образы, в каталоге /var/lib/docker. Этот путь задаётся параметром data-root демона Docker и используется независимо от того, были ли образы загружены из реестра или собраны локально. Проверить текущее значение можно командой docker info, где путь отображается в поле Docker Root Dir.
Внутри /var/lib/docker образы не представлены отдельными архивами. Docker хранит их как набор слоёв файловой системы, метаданных и ссылок, распределённых по служебным каталогам. Основная часть данных образов размещается в подкаталоге, соответствующем активному драйверу хранения, например overlay2, aufs или btrfs. Именно там находятся файловые слои, которые используются как образами, так и контейнерами.
Для систем с драйвером overlay2, который применяется по умолчанию в современных версиях Docker, слои образов хранятся в каталоге /var/lib/docker/overlay2. Каждый слой представлен отдельной директорией с уникальным идентификатором и набором файлов, отражающих изменения относительно предыдущего слоя. Метаданные, связывающие слои в образ, располагаются в /var/lib/docker/image.
Ручная работа с содержимым /var/lib/docker не рекомендуется. Удаление или изменение файлов напрямую приводит к повреждению хранилища и потере данных. Для очистки места и управления образами следует использовать команды docker image rm, docker system prune и их параметры, которые корректно удаляют неиспользуемые слои без нарушения целостности хранилища.
Какие каталоги в /var/lib/docker отвечают именно за образы

Каталог /var/lib/docker содержит данные всех компонентов Docker, однако за хранение образов отвечают строго определённые подкаталоги. Они разделяют файловые слои, служебные метаданные и информацию о связях между слоями, что позволяет Docker повторно использовать данные и не дублировать их между образами.
Ключевую роль играет каталог, соответствующий активному драйверу хранения. В современных Linux-системах это чаще всего overlay2. Именно там физически находятся файловые слои образов, которые затем монтируются в контейнеры в режиме только для чтения.
Метаданные образов, такие как список слоёв, хэши, теги и информация о репозиториях, хранятся отдельно от самих файлов. Это позволяет Docker управлять образами без необходимости напрямую анализировать содержимое файловых слоёв.
| Каталог | Назначение |
|---|---|
| /var/lib/docker/overlay2 | Файловые слои образов и контейнеров при использовании драйвера overlay2 |
| /var/lib/docker/image | Метаданные образов: манифесты, цепочки слоёв, связи с тегами |
| /var/lib/docker/distribution | Данные о загрузке образов из реестров и кэш слоёв |
Каталоги containers, volumes и network не относятся к хранению образов и используются для контейнеров, томов и сетевых настроек. При анализе занимаемого дискового пространства имеет смысл концентрироваться именно на overlay2 и image, так как они определяют фактический объём данных образов на сервере.
Как драйвер хранения (overlay2, aufs, btrfs) влияет на расположение файлов

Драйвер хранения определяет не только способ объединения слоёв образов, но и то, в каких каталогах и в каком виде Docker размещает данные на диске. Выбор драйвера фиксируется при запуске демона и напрямую влияет на структуру внутри /var/lib/docker. Узнать активный драйвер можно через docker info в поле Storage Driver.
При использовании overlay2 все файловые слои образов располагаются в каталоге /var/lib/docker/overlay2. Каждый слой представлен отдельной директорией с подкаталогами diff, link и служебными файлами. Такой формат упрощает диагностику занимаемого места и позволяет ядру Linux работать с объединёнными слоями без копирования данных.
Драйвер aufs применялся в старых версиях Docker и использует каталог /var/lib/docker/aufs. Слои образов там хранятся в виде множества директорий, связанных через символьные ссылки. Структура менее прозрачна, а объём служебных данных выше, что осложняет анализ дискового пространства и отладку проблем с хранилищем.
При выборе btrfs Docker размещает образы внутри /var/lib/docker/btrfs, используя нативные подтома файловой системы. Каждый слой становится отдельным подтомом, а операции с образами сводятся к работе со снимками. Это меняет подход к резервному копированию и очистке: стандартные утилиты btrfs позволяют видеть и управлять слоями без обращения к структуре overlay-директорий.
Смена драйвера хранения автоматически изменяет физическое расположение файлов образов, но не переносит существующие данные. При планировании миграции необходимо заранее экспортировать образы или полностью очистить каталог /var/lib/docker перед повторным запуском Docker с новым драйвером.
Где Docker Desktop хранит образы на macOS и Windows

Docker Desktop на macOS и Windows не размещает образы напрямую в файловой системе хоста. Все образы, контейнеры и слои хранятся внутри виртуальной машины Linux, которую Docker Desktop запускает автоматически. Это означает, что привычного каталога /var/lib/docker на уровне macOS или Windows не существует в явном виде.
На macOS данные Docker находятся внутри виртуального диска формата qcow2 или raw, который располагается в каталоге пользователя, обычно по пути ~/Library/Containers/com.docker.docker/Data/vms. Внутри этого файла размещена полноценная Linux-файловая система, где образы хранятся стандартным способом в /var/lib/docker с учётом выбранного драйвера хранения.
В Windows расположение зависит от используемого бэкенда. При работе через WSL 2 образы Docker хранятся внутри дистрибутива docker-desktop и физически представлены файлом виртуального диска ext4.vhdx. Он размещается в профиле пользователя Windows и содержит всю структуру Linux, включая каталог /var/lib/docker.
Попытки вручную изменять или удалять файлы виртуальных дисков приводят к потере всех образов и контейнеров. Для освобождения места рекомендуется использовать команды docker image prune и настройки Docker Desktop, где можно изменить лимит дискового пространства или перенести виртуальный диск на другой накопитель через интерфейс приложения.
Как определить текущее место хранения образов через docker info

Основной ориентир – параметр Docker Root Dir. Он указывает корневой каталог хранилища Docker, внутри которого находятся все образы, контейнеры и служебные данные. Если путь отличается от стандартного /var/lib/docker, значит хранилище было перенесено, и любые операции с диском должны учитывать именно это значение.
Второй критически важный параметр – Storage Driver. Он определяет, каким образом и в каком подкаталоге внутри Docker Root Dir размещены файловые слои образов. Например, при использовании overlay2 фактические данные образов находятся в подкаталоге overlay2, а при btrfs – в одноимённом каталоге с подтомами файловой системы.
Использование docker info исключает догадки и позволяет сразу работать с правильным каталогом, что критично при анализе занимаемого места, переносе данных на другой диск и диагностике проблем с файловой системой.
Как изменить каталог хранения образов Docker на сервере

Изменение каталога хранения образов Docker выполняется на уровне демона и затрагивает все данные: образы, контейнеры, слои и метаданные. Docker не поддерживает частичный перенос, поэтому операция требует остановки сервиса и аккуратной подготовки нового пути.
Основной способ – настройка параметра data-root, который задаёт корневой каталог Docker-хранилища. Перед изменением необходимо убедиться, что на целевом разделе достаточно места и поддерживается файловая система, совместимая с используемым драйвером хранения.
- Остановить Docker-сервис, чтобы исключить изменения данных во время переноса.
- Создать новый каталог для хранения данных Docker на нужном разделе диска.
- Скопировать текущее содержимое каталога /var/lib/docker в новый путь с сохранением прав и символьных ссылок.
- Задать параметр data-root в конфигурации демона Docker, указав новый каталог.
- Запустить Docker и проверить корректность загрузки образов и контейнеров.
- Не изменять каталог хранения без полной остановки Docker.
- Не использовать символические ссылки вместо data-root, так как это приводит к нестабильной работе.
- Не удалять старый каталог до полной проверки работоспособности нового хранилища.
При корректной настройке Docker начинает использовать новый каталог без пересборки образов и повторной загрузки данных из реестров, что позволяет быстро перенести хранилище на другой диск или серверный раздел.
Вопрос-ответ:
Можно ли найти файлы образов Docker как обычные архивы на сервере?
Нет. Образы Docker не хранятся в виде отдельных файлов или архивов. Они состоят из набора слоёв файловой системы и метаданных, которые распределены по служебным каталогам внутри Docker Root Dir. На Linux это обычно /var/lib/docker, а сами слои находятся в подкаталоге драйвера хранения, например overlay2.
Почему размер каталога /var/lib/docker больше, чем суммарный размер образов из docker images?
Команда docker images показывает логический размер образов, а не реальный объём данных на диске. В каталоге /var/lib/docker дополнительно хранятся общие слои, метаданные, кэш загрузки и данные остановленных контейнеров. Часть слоёв может использоваться сразу несколькими образами, что усложняет прямое сопоставление размеров.
Где физически лежат образы Docker Desktop на Windows и почему их не видно в проводнике?
Docker Desktop хранит образы внутри виртуальной Linux-системы. На Windows с WSL 2 это файл ext4.vhdx, размещённый в профиле пользователя. Внутри него находится стандартный каталог /var/lib/docker, но доступ к нему напрямую через проводник отсутствует.
Можно ли перенести каталог с образами Docker на другой диск без пересборки?
Да. Для этого нужно остановить Docker, скопировать весь каталог Docker Root Dir на новый диск и указать новый путь через параметр data-root в конфигурации демона. После запуска Docker использует существующие образы и контейнеры без повторной загрузки.
Как понять, какой именно подкаталог занимает больше всего места из-за образов?
Следует определить активный драйвер хранения через docker info, затем анализировать соответствующий каталог внутри Docker Root Dir. Для overlay2 это /var/lib/docker/overlay2. Проверка размера именно этого каталога даёт реальное представление о том, сколько места занимают слои образов.
