Где хранятся образы Docker на сервере и локально

Где хранятся образы docker

Где хранятся образы docker

При работе с Docker администраторы и разработчики регулярно сталкиваются с нехваткой дискового пространства, миграцией окружений и аудитом содержимого серверов. В таких ситуациях ключевым становится понимание, где именно Docker размещает образы, какие каталоги задействованы и от чего зависит их фактическое расположение. Без этого знания невозможно корректно чистить хранилище, настраивать резервное копирование или переносить данные между хостами.

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

Локальные окружения на Windows и macOS устроены иначе. Docker Desktop запускает виртуальную машину, внутри которой и находится реальное хранилище образов. Это означает, что поиск файлов образов на уровне пользовательской файловой системы напрямую не даст результата. Для контроля и диагностики требуется использовать команды Docker и настройки самой платформы, а не стандартные средства просмотра каталогов.

В статье подробно разобрано, где физически хранятся образы Docker на сервере и локальном компьютере, как определить активный путь хранения, какие факторы на него влияют и какие действия допустимы без риска повредить рабочие контейнеры.

Фактический путь хранения образов Docker на Linux-сервере

Фактический путь хранения образов 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 отвечают именно за образы

Каталог /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) влияет на расположение файлов

Как драйвер хранения (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

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 info

Основной ориентир – параметр Docker Root Dir. Он указывает корневой каталог хранилища Docker, внутри которого находятся все образы, контейнеры и служебные данные. Если путь отличается от стандартного /var/lib/docker, значит хранилище было перенесено, и любые операции с диском должны учитывать именно это значение.

Второй критически важный параметр – Storage Driver. Он определяет, каким образом и в каком подкаталоге внутри Docker Root Dir размещены файловые слои образов. Например, при использовании overlay2 фактические данные образов находятся в подкаталоге overlay2, а при btrfs – в одноимённом каталоге с подтомами файловой системы.

Использование docker info исключает догадки и позволяет сразу работать с правильным каталогом, что критично при анализе занимаемого места, переносе данных на другой диск и диагностике проблем с файловой системой.

Как изменить каталог хранения образов Docker на сервере

Как изменить каталог хранения образов Docker на сервере

Изменение каталога хранения образов Docker выполняется на уровне демона и затрагивает все данные: образы, контейнеры, слои и метаданные. Docker не поддерживает частичный перенос, поэтому операция требует остановки сервиса и аккуратной подготовки нового пути.

Основной способ – настройка параметра data-root, который задаёт корневой каталог Docker-хранилища. Перед изменением необходимо убедиться, что на целевом разделе достаточно места и поддерживается файловая система, совместимая с используемым драйвером хранения.

  1. Остановить Docker-сервис, чтобы исключить изменения данных во время переноса.
  2. Создать новый каталог для хранения данных Docker на нужном разделе диска.
  3. Скопировать текущее содержимое каталога /var/lib/docker в новый путь с сохранением прав и символьных ссылок.
  4. Задать параметр data-root в конфигурации демона Docker, указав новый каталог.
  5. Запустить 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. Проверка размера именно этого каталога даёт реальное представление о том, сколько места занимают слои образов.

Ссылка на основную публикацию