Docker mac os где хранятся образы
Где находятся образы докеров после их загрузки из докера в 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):
Обновление: как уже упоминалось @udondan, в Docker теперь есть отдельная вкладка "Диск" в настройках, где отображается расположение образа диска:
Ответ 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 для 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 хранятся в двух файлах, как показано следующей командой
Да, к сожалению, эти две строки "(мета) файл данных" не появляются в каждом докере. Это зависит от используемого водителя Правильный ответ: «Это то, где он находится на МОЕЙ машине». Правильный ответ: «Вот как вы найдете это на вашей машине». Это правильный ответ. Я присоединился к компании с 11 различными томами EBS, полными образов докеров. Этот ответ позволил мне выяснить, какой был текущий «Root Dir». В Mac OS X (по крайней мере, в Yosemite, то есть EOL относительно Docker), docker info очень полезно, но в выводе Docker Root Dir: /var/lib/docker не указывается место хранения изображения (см. Ответ для конкретного Mac выше).Файл данных: /var/lib/docker/devicemapper/devicemapper/data
Файл метаданных: /var/lib/docker/devicemapper/devicemapper/metadata
На недавно выпущенном 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
Для тех, кто использует панель инструментов 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:
- Стоп докер и т. Д.
- Введите «Диспетчер Hyper-V» в поле поиска панели задач и запустите его.
- Выберите свой ПК в левой панели (мой называется DESKTOP-CBP **)
- Щелкните правой кнопкой мыши на правильной виртуальной машине (моя называется MobyLinuxVM)
- Выберите «Выключить» (если он запущен)
- Щелкните правой кнопкой мыши еще раз и выберите «Переместить»
- Следуйте инструкциям
Если вы помните, что 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 к другому порту на хосте.
Читайте также: