Docker mac os где хранятся образы

Обновлено: 05.07.2024

Где находятся образы докеров после их загрузки из докера в Mac OSX. Например, если я запускаю команду вроде:

образ загружается и контейнер запускается, но где этот образ находится в моей системе?

Примечание. Где хранятся образы Docker на главном компьютере? Этот вопрос имеет ответы, связанные в основном с машиной Linux. Ответы для Mac OS X предполагают, что boot2docker используется вместе с установкой Docker, что не так для меня.

Для тех, кто использует панель инструментов Docker (которая использует docker-machine), ответы относительно boot2docker в Mac OS X недопустимы. Виртуальная машина докера называется "по умолчанию" и существует в каталоге /Users/ /.docker/machine/machines/default/.

Примечание. Я также добавил ответ на этот вопрос: где хранятся образы Docker на хост-компьютере? но я отвечаю и здесь, чтобы легче было найти ответ для человека, который специально ищет Mac OS X и новую версию Docker.

И если вы используете Docker для Mac, то расположение снова будет другим, а именно:

Расположение образа диска также можно получить (как указано в документации), выбрав "Предпочтения" -> "Расширенное меню" на значке панели инструментов Docker (работает в Docker-CE v17):

Обновление: как уже упоминалось @udondan, в Docker теперь есть отдельная вкладка "Диск" в настройках, где отображается расположение образа диска:

Чтобы узнать, как открыть эти папки в случае, если вы получаете каталог сейчас, потому что он смонтирован на виртуальном хосте, а не на обычном томе Mac

Если вы хотите контролировать громкость с вашего Mac, вы можете отобразить его во время создания контейнера

который будет сопоставлять каталог mydata на вашем контейнере в каталог /path/to_mac/directory/MyHostDir на вашем компьютере

Образы докеров хранятся в другом месте на Mac с Docker Desktop, отличном от того, где они хранятся в других системах Linux.

Docker Desktop хранит контейнеры и образы Linux в одном большом файле "образа диска" в файловой системе Mac. Это отличается от Docker в Linux, который обычно хранит контейнеры и изображения в каталоге /var/lib/docker.

На моем Mac с MacOS 10.14.6 Mojave и запущенным Docker версии 19.03.8 этот единственный большой файл можно найти по адресу:

Где находятся изображения докеров, которые загружаются с док-станции в Mac OSX. Например, если я запускаю команду, например:

изображение загружается и контейнер запускается, но где это изображение находится в моей системе?

Примечание: Где хранятся изображения Docker на главной машине? В этом вопросе есть ответы, связанные, в основном, с машиной Linux. Ответы для Mac OS X рассматривают, что boot2docker используется наряду с установкой докеров, что не подходит для меня.

ОТВЕТЫ

Ответ 1

Для тех, кто использует панель инструментов Docker (которая использует docker-machine), ответы, касающиеся boot2docker в Mac OS X, недействительны. Виртуальная машина Docker называется "по умолчанию" и существует в каталоге /Users/<username>/.docker/machine/machines/default/ .

Примечание. Я также добавил этот ответ на этот вопрос: Где хранятся образы Docker на хост-компьютере?, но я также отвечаю здесь, чтобы легче было найти ответ для человека, специально ищущего Mac OS X и новая версия Docker.

Ответ 2

И если вы используете Docker для Mac, то местоположение снова будет другим, а именно:

Ответ 3

Расположение образа диска также можно получить (как указано в документации), выбрав Preferences-> Расширенное меню на значке панели инструментов Docker (работает в Docker-CE v17):

Docker->Preferences->Advanced

Обновление: как уже упоминалось @udondan, в Docker теперь есть отдельная вкладка "Диск" в настройках, где отображается расположение образа диска:

Docker->Preferences->Disk

Ответ 4

Чтобы узнать, как открыть эти папки в случае, если вы получаете каталог сейчас, потому что он смонтирован на виртуальном хосте, а не на обычном томе Mac

Если вы хотите контролировать громкость с вашего Mac, вы можете отобразить его во время создания контейнера

который отобразит каталог mydata в вашем контейнере в каталог /path/to_mac/directory/MyHostDir на вашем Mac

Ответ 5

В моем случае (Mavericks/docker brew установлено/Название изображения: по умолчанию) находится под

(Вы должны использовать терминал, а не искатель, чтобы увидеть его.)

Ответ 6

Этот ответ не касается версии "boot2Docker" для MAC. Здесь у меня есть версия 17.12.0-ce-mac55, вы должны иметь в виду, что Docker все еще работает в виртуальной машине, системные пути указаны относительно виртуальной машины, а не из системы Mac Osx. Как говорится, все содержится в файле VM:

Попробуйте запустить Alpine образ с этим параметром тома и командой ls, вы можете перечислить хост VM:

Docker запускает --rm -it -v/: /vm-root alpine: край ls -l/vm-root

После этого просто попробуйте:

Docker запускает --rm -it -v/: /vm-root alpine: край ls -l/vm-root/var/lib/docker

Теперь вы можете перечислить папку докера с хоста WM

Ответ 7

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

Используйте docker save для сохранения одного или нескольких изображений в архиве tar (по умолчанию передается в STDOUT)

Мне удалось найти контейнеры в каталоге /var/lib/docker/containers , но я не могу найти изображения.

Под какими каталогами и файлами /var/lib/docker ?

В таких случаях лучше всего указать особенности операционной системы в названии вопроса и / или в постановке вопроса. Два хороших ответа были предоставлены для Linux и MacOS (Mac OS X).

По умолчанию это будет , aufs но может упасть обратно overlay , overlay2 , btrfs , devicemapper или в zfs зависимости от вашей поддержки ядра. В большинстве мест это будет, aufs но RedHats пошел с devicemapper .

Вы можете вручную установить драйвер хранилища с помощью опции -s или --storage-driver= для демона Docker .

  • /var/lib/docker/ будет содержать специфичное для драйвера хранилище для содержимого изображений.
  • /var/lib/docker/graph/<id> теперь только содержит метаданные об изображении, в json и layersize файлах.
  • /var/lib/docker/aufs/diff/<id> Содержит содержимое файла изображений.
  • /var/lib/docker/repositories-aufs файл JSON, содержащий локальную информацию об изображении Это можно посмотреть с помощью команды docker images .

В случае devicemapper :

  • /var/lib/docker/devicemapper/devicemapper/data хранит изображения
  • /var/lib/docker/devicemapper/devicemapper/metadata метаданные
  • Обратите внимание, что эти файлы являются «разреженными» файлами с тонкой подготовкой, поэтому они не такие большие, как кажутся.
Могу ли я увидеть содержимое внутри, смонтировав его каким-либо образом? Если вы установите драйвер хранилища после того, как он уже запущен и у него есть несколько запущенных контейнеров с изображениями, перенесет ли он дату при следующем перезапуске демона? Если нет, то как изменить драйвер хранилища в этом случае? Сделайте себе одолжение и не проверяйте значения по умолчанию. Используйте docker info и найдите фактическое местоположение, специфичное для вашей установки . Кажется, это изменилось. Я использую Docker for Mac с 2 изображениями по 1,5 ГБ каждый и /var/lib не имеет каталога docker .

При использовании Docker для Mac Application создается впечатление, что контейнеры хранятся в виртуальной машине, расположенной по адресу:

ОБНОВЛЕНИЕ (Предоставлено mmorin ):

По состоянию на 15 января 2019 года, кажется, есть только этот файл:

который содержит Docker Disk и все образы и контейнеры внутри него.

Это место для всех изображений (например ubuntu , nginx ) или это место для всех контейнеров? Оригинальный вопрос требует изображений , а не контейнеров . Если вы помните, что Docker все еще работает в ВМ, системные пути относятся к ВМ, а не из системы Mac Osx. Попробуйте следующую команду: docker запустите --rm -it -v /: / vm-root alpine: edge ls -l / vm-root и после этого: docker запустите --rm -it -v /: / vm-root alpine: edge ls -l / vm-root / var / lib / docker Вы можете просмотреть папку докера с хоста WM Кажется, это изменилось. Я использую Docker for Mac с двумя изображениями по 1,5 ГБ каждый и

/Library/Containers/Data/com.docker.docker/Data не имеет каталога, com.docker.driver.amd64-linux и единственный большой файл находится vms/0/Docker.raw с 3,6 ГБ.

Это был старый способ, теперь он изменился. Не обращайте внимания на этот ответ с 2019 года

В особом случае Mac OS X или Windows, используя boot2docker, ваши образы Docker хранятся в виртуальной машине VirtualBox, управляемой boot2docker.

Эта виртуальная машина будет храниться в обычном месте образов VirtualBox:

Окна: %USERPROFILE%/VirtualBox VMs/boot2docker-vm

Вы можете сбросить его, запустив (ВНИМАНИЕ: Это уничтожит все изображения, которые вы создали и загрузили до сих пор):

Это особенно полезно, если вы сохранили тонны промежуточных изображений при сборке / отладке сборки без полезных опций --rm, я приведу их здесь для справки: Использование:

После новой установки Docker в Windows 10 я могу подтвердить, что в результате первого щелчка по ярлыку Docker Quickstart Terminal в первый раз создается виртуальная машина (ВМ) с именем «default» (после нескольких неудачных запусков - продолжайте работать до тех пор, пока оно работает). Эта виртуальная машина «по умолчанию» может быть расположена в Windows по адресу: %USERPROFILE%\.docker\machine\machines (обратите внимание на точку остановки в пути) Ответ больше не верен для Windows 10. Вместо этого, посмотрите более новый ответ от @tristan, на который ссылается C:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx % USERPROFILE% \. Docker все еще корректен для установок win7.

На самом деле, изображения Docker хранятся в двух файлах, как показано следующей командой

Файл данных: /var/lib/docker/devicemapper/devicemapper/data

Файл метаданных: /var/lib/docker/devicemapper/devicemapper/metadata

Да, к сожалению, эти две строки "(мета) файл данных" не появляются в каждом докере. Это зависит от используемого водителя Правильный ответ: «Это то, где он находится на МОЕЙ машине». Правильный ответ: «Вот как вы найдете это на вашей машине». Это правильный ответ. Я присоединился к компании с 11 различными томами EBS, полными образов докеров. Этот ответ позволил мне выяснить, какой был текущий «Root Dir». В Mac OS X (по крайней мере, в Yosemite, то есть EOL относительно Docker), docker info очень полезно, но в выводе Docker Root Dir: /var/lib/docker не указывается место хранения изображения (см. Ответ для конкретного Mac выше).

На недавно выпущенном Docker для Windows, который использует Hyper-V, данные находятся на виртуальном жестком диске Docker:

Вы также можете открыть «Диспетчер Hyper-V» для доступа к Docker / MobyLinuxVM.

Изображения хранятся в /var/lib/docker/graph/<id>/layer .

Обратите внимание, что изображения просто отличаются от родительского изображения. Родительский идентификатор хранится вместе с метаданными изображения /var/lib/docker/graph/<id>/json .

Когда вы docker run изображение. AUFS объединит все слои в одну используемую файловую систему.

Этот ответ уже устарел, они изменили положение вещей.

В Ubuntu вы можете «играть» с изображениями, работающими

На самом деле, изображения хранятся в /var/lib/docker/aufs/diff

снимок экрана, показывающий инструмент анализатора диска baobab, работающий на / var / lib / docker

Действительно хорошо. На Mac DaisyDisk аналогичен (отображение колеса), GrandPerspective также полезен (прямоугольники). Кажется, это единственный надежный способ найти его.

Для тех, кто использует панель инструментов Docker (которая использует docker-machine), ответы, касающиеся boot2docker в Mac OS X, недействительны. Виртуальная машина Docker называется «по умолчанию» и существует в /Users/<username>/.docker/machine/machines/default/ каталоге.

Я не могу найти никаких контейнеров или папок с изображениями в этом каталоге. $ docker images -a дает около 1 гигабайта изображений, в то время как disk.vmdk в

/ .docker составляет около 20 гигабайт. Как так?

@Grav: виртуальная машина выделяет 20 гигабайт для будущего использования, но использует только 1 гигабайт для изображений.

В Docker для Windows (собственная Windows) контейнерное хранилище по умолчанию находится по адресу:

Я выполнил docker build команду, и я не вижу файл, который я считаю файлом изображения. Я вижу некоторые папки и некоторые текстовые файлы (например, service.txt). Какой тип файла и с каким расширением файла docker build создает?

Если вы используете Docker для MAC (не boot2docker ), то местоположение /Users/<</>UserName></>/Library/Containers/com.docker.docker/Data/

/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux $ ls -lh | grep Docker -rw-r--r--@ 1 jasper staff 6.3G May 25 19:20 Docker.qcow2 я нашел изображение. Но это не контейнеры, хотя. Не видеть их в этом каталоге данных действительно ..

Как ответили здесь , если вы находитесь на Mac, он находится по адресу

Docker.qcow2? Как я должен извлечь конкретное изображение докера из этого?

Более подробно об ответе Тристана, в Windows с Hyper-V вы можете переместить изображение с помощью следующих шагов из matthuisman:

  1. Стоп докер и т. Д.
  2. Введите «Диспетчер Hyper-V» в поле поиска панели задач и запустите его.
  3. Выберите свой ПК в левой панели (мой называется DESKTOP-CBP **)
  4. Щелкните правой кнопкой мыши на правильной виртуальной машине (моя называется MobyLinuxVM)
  5. Выберите «Выключить» (если он запущен)
  6. Щелкните правой кнопкой мыши еще раз и выберите «Переместить»
  7. Следуйте инструкциям
Это только перемещает машину Hyper-V, но не изображения, изображения будут по-прежнему сохраняться там, где находится VHD. @olive_tree Я пытаюсь найти изображения, созданные docker build командой. Я на компьютере с Windows 10. Я смотрю в C: \ Users \ Public \ Documents \ Hyper-V \ Виртуальные жесткие диски, но вижу только MobyLinuxVM.vhdx. Где хранятся реальные изображения?

Если вы помните, что Docker все еще работает в ВМ, системные пути относятся к ВМ, а не из системы Mac Osx. Как говорится, все содержится в файле VM:

Попробуйте запустить Alpine образ с этим параметром тома и командой ls, вы можете перечислить хост VM:

docker run --rm -it -v /: / vm-root alpine: край ls -l / vm-root

После этого просто попробуйте:

запустить docker --rm -it -v /: / vm-root alpine: край ls -l / vm-root / var / lib / docker

Теперь вы можете перечислить папку Docker с хоста VM

Спасибо! Это единственный ответ, который работал для меня в Windows 10 с Hyper-v. Мне удалось очистить поврежденные файлы в папке elusive / var / lib / docker / overlay2.

Я использую boot2docker для Docker на Mac OSX, поэтому изображения сохраняются в /Users/<USERNAME>/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vmdk .

Я могу ответить на этот вопрос только для пользователей Ubuntu:

Корневой каталог докера можно найти при запуске команды docker info

Каталог Docker будет указан в этой строке: " Docker Root Dir: /var/lib/docker "

Об образах докеров они хранятся в каталоге докеров: /var/lib/docker/aufs/diff/

Помните, что эти вещи не одинаковы во всех версиях докера. В настоящее время я использую 1.12.3.

Используйте docker info команду для отображения общесистемной информации, и ее местоположение может отличаться.

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

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

Вот пример на Ubuntu (проверьте Root Dir ):

А вот пример на Travis CI (см. Docker Root Dir ):

Вы можете использовать --format параметр, чтобы извлечь эту информацию в один файл, например


Разница между изображениями и контейнерами

Контейнеры создаются из образов, и они похожи на настоящую виртуальную машину, на которой выполняется приложение. У вас может быть несколько контейнеров, работающих параллельно с одним и тем же образом. Каждый контейнер будет иметь свою собственную файловую систему, необязательно созданную с помощью «монтирования томов», которые привязывают данные от хоста к контейнеру.

Работа с хранилищем образов Docker

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

Если вы хотите получить прямой доступ к данным изображения, они обычно хранятся в следующих местах:

  • Linux: / var / lib / docker /
  • Windows: C: ProgramData DockerDesktop
  • macOS:

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

образ докера ls


К счастью, это не так плохо, как кажется, поскольку в образах Docker версии хранятся постепенно. Это означает, что всякий раз, когда вы загружаете новую версию, она заменяет только те части, которые были изменены. Если вы часто используете один и тот же образ снова и снова, вы, вероятно, не будете слишком дорого стоить для хранения.

Однако, если вы используете много разных изображений, у вас может быть сохранено много изображений, которые даже больше не используются. Чтобы очистить их, Docker предоставляет встроенную команду для запуска сборки мусора. Это приведет к удалению всех изображений, на которые нет ссылок, т. Е. Не отмеченных тегами или не упоминаемых каким-либо контейнером.

обрезка образа докера

Чтобы удалить все старые образы, не используемые существующими контейнерами, запустите его с флагом -a:

docker image prune -a

Это охватывает основной вариант использования, но есть еще несколько полезных команд:

Работа с хранилищем контейнеров Docker

Вы можете просмотреть всю информацию о контейнере с помощью docker inspect, который показывает драйверы и данные файловой системы, а также все существующие монтирования и тома.

докер проверяет идентификатор контейнера


Контейнеры хранят данные двумя способами. Во-первых, это базовая файловая система, которая копируется из образа и уникальна для каждого контейнера. Docker использует «нижний каталог» и «верхний каталог», которые представляют собой отдельные уровни, которые объединяются в одну гибридную файловую систему. Нижний каталог хранит данные базового образа, а верхний каталог хранит все, что было изменено во время выполнения, например файлы журнала. В любом случае их хранение зависит от того, какой драйвер файловой системы Docker настроен на использование.

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

Доступ к томам

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

Если вы хотите изменить данные, хранящиеся в томах, вы тоже можете это сделать. Они хранятся в стандартном формате, доступном из Linux:

/ вар / библиотека / докер / тома / volumeID / _data

Вы можете получить идентификатор тома и информацию с помощью docker volume inspect.

объем докера удалить объем докера rm volumeID

Изменение файловой системы контейнера Docker

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

docker exec -it контейнер bash

Отсюда вы можете использовать обычные команды Linux. Если вы хотите сделать это удаленно, вы можете установить SSH-сервер в свой контейнер и привязать порт 22 к другому порту на хосте.

Читайте также: