Где хранятся изображения Docker на главной машине?

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

Каковы каталоги и файлы в разделе /var/lib/docker?

Ответ 1

Содержимое каталога /var/lib/docker изменяется в зависимости от драйвера, который Docker использует для хранения.

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

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

  • /var/lib/docker/{driver-name} будет содержать конкретное хранилище драйверов для содержимого изображений.
  • /var/lib/docker/graph/<id> теперь содержит только метаданные об изображении, в файлах json и layersize.

В случае aufs:

  • /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 метаданные
  • Обратите внимание, что эти файлы представляют собой тонкие подготовленные "разреженные" файлы, поэтому они не такие большие, как кажется.

Ответ 2

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

~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2

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

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

~/Library/Containers/com.docker.docker/Data/vms/0/Docker.raw

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

Ответ 3

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

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

      OS X: ~/VirtualBox VMs/boot2docker-vm

      Windows: %USERPROFILE%/VirtualBox VMs/boot2docker-vm

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

boot2docker down
boot2docker destroy
boot2docker init
boot2docker up

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

docker build -t webapp --rm=true --force-rm=true .

вместо:

docker build -t webapp .

Ответ 4

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

$ docker info

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

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

Ответ 5

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

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

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

Ответ 6

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

C:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx

Вы также можете открыть "Менеджер Hyper-V" для доступа к Docker/MobyLinuxVM.

Ответ 7

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

Ответ 8

В Ubuntu вы можете "играть" с запущенными изображениями

sudo baobab /var/lib/docker

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

screenshot showing disk analyzer tool baobab running on /var/lib/docker

Ответ 9

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

   > docker info
   ...
   Docker Root Dir: C:\ProgramData\Docker
   ...

Ответ 10

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

Ответ 11

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

/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2

Ответ 12

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

В Windows 10

  1. Стоп докер и т.д.
  2. Введите "Диспетчер Hyper-V" в поле поиска панели задач и запустите его.
  3. Выберите свой ПК в левой панели (мой называется DESKTOP-CBP **)
  4. Щелкните правой кнопкой мыши на правильной виртуальной машине (моя называется MobyLinuxVM)
  5. Выберите "Выключить" (если он запущен)
  6. Щелкните правой кнопкой мыши еще раз и выберите "Переместить"
  7. Следуйте инструкциям

Ответ 13

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

Ответ 14

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

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

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

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

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

Ответ 15

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

/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2

Попробуйте запустить 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

Ответ 16

В Docker для Windows журналы находятся здесь: %USERPROFILE%\AppData\Local\Docker

Ответ 17

проверьте папку докера в /var/lib

изображения хранятся в расположении ниже:

/var/lib/docker/image/overlay2/imagedb/content

Ответ 18

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

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

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

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

$ docker info
...
Server Version: 18.06.1-ce
Storage Driver: aufs
 Root Dir: /var/snap/docker/common/var-lib-docker/aufs
...
Docker Root Dir: /var/snap/docker/common/var-lib-docker
...

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

$ docker info
Server Version: 17.09.0-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
...
Docker Root Dir: /var/lib/docker
...

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

$ docker info --format '{{.DriverStatus}}'
[[Root Dir /var/snap/docker/common/var-lib-docker/aufs] [Backing Filesystem extfs] [Dirs 265] [Dirperm1 Supported true]]

или же:

$ docker info --format '{{json .DriverStatus}}'
[["Root Dir","/var/snap/docker/common/var-lib-docker/aufs"],["Backing Filesystem","extfs"],["Dirs","265"],["Dirperm1 Supported","true"]]

Ответ 19

Окружающая среда: Windows 10 Pro, Docker Desktop 2.0.3.0 край

щелкните правой кнопкой мыши значок докера в области уведомлений, выберите настройки - дополнительно:

Расположение образа диска (редактируется через браузер):

C:\Users\Public\Documents\Hyper-V\Виртуальные жесткие диски \DockerDesktop.vhdx

(это там - каталог документов скрыт)

Ответ 20

В Fedora Docker использует LVM для хранения, если он доступен. В моей системе docker info показано:

Storage Driver: devicemapper
 Pool Name: vg01-docker--pool
 Pool Blocksize: 524.3 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file:
 Metadata file:
 Data Space Used: 9.622 GB
 ...

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

Ответ 21

На Debian Unstable/Sid,

docker info о docker info чтобы найти общесистемную информацию.

изображения хранятся в /var/lib/docker/image/overlay2/imagedb/content и

контейнеры хранятся в /var/lib/docker/containers

докер версия 18.06.0-ce, API версия 1.38

Ответ 22

В Windows 2016 докер (DockerMsftProvider) использует папку "windowsfilter" в корневом каталоге докера.

>docker info
...
Storage Driver: windowsfilter
...
Docker Root Dir: C:\ProgramData\docker
...

Он использует папку "tmp" в корневом каталоге докера для загрузки файлов и удаляет файлы после извлечения загруженных файлов в папку "windowsfilter".

Ответ 23

Я не смог решить вопрос с Docker версии 18.09 на macos, используя приведенные выше ответы, и попытался снова.

Единственным реальным решением для меня было использование этой конфигурации docker-compose.yml:

version: '3.7'
...
  services:
    demo-service:
      volumes:
        - data-volume:/var/tmp/container-volume

volumes:
  data-volume:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /tmp/host-volume

После запуска с docker-compose up я, наконец, получил /tmp/host-volume от macos, расшаренных как доступный для записи том из контейнера:

> docker exec -it 1234 /bin/bash
bash-4.4$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
...
osxfs                488347692 464780044  21836472  96% /var/tmp/container-volume

Надеюсь, что это помогает другим.

Ответ 24

Изображения хранятся в /var/lib/docker а затем в соответствующем каталоге storage driver.

Используемый драйвер хранилища можно определить, выполнив команду docker info.

Ответ 25

Согласно руководству по началу работы с Docker "ваш встроенный образ" находится в "локальном реестре образов Docker".

enter image description here

Это все еще странно для меня, потому что теперь это приводит к вопросу. Где мой компьютер - локальный реестр образов Docker?

Тем не менее, я определенно думаю, что эта информация стоит поделиться в качестве ответа.

Ответ 26

используйте docker inspect container_id
найти папку в MergedDir

# example. 
"MergedDir": "/var/lib/docker/overlay2/f40cc2ea8912ec3b32deeef5a1542a132f6e918acb/merged 

Ответ 27

Для "Docker Desktop", нажмите на значок в панели задач Docker и нажмите "Настройки". enter image description here

На вкладке "Дополнительно" вы можете увидеть расположение образа диска.

enter image description here

Ответ 28

Если кому-то это нужно для сценариев, вот решение в одну строку.

В оболочке POSIX с включенным PCRE grep попробуйте:

DOCKER_ROOT_DIR="$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"

В PowerShell:

$DOCKER_ROOT_DIR="$(docker info 2>&1 | foreach {if($_ -match "Docker Root Dir"){$_.TrimStart("Docker Root Dir: ")}})"

Обратите внимание, что в Windows 10 (с 10.0.18999.1) в конфигурациях по умолчанию возвращается:

  • C:\ProgramData\Docker в режиме "Контейнеры Windows"
  • /var/lib/docker, в режиме "контейнеры Linux"

Ответ 29

И если вы хотите посмотреть, какие изображения у вас есть локально, вы должны запустить docker в интерактивном режиме с помощью команды bash (я думаю, что эта команда), чтобы получить обычное приглашение linux $. Затем запустите изображения докеров. Внутри mobylinux.vhdx в/var/lib/docker/находится локальный кеш.