Де зберігаються зображення Docker на хост-машині?


874

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

Під якими каталогами та файлами розміщено /var/lib/docker?


2
Найкраще вказати специфіку операційної системи в заголовку запитання та / або викладі питань у таких випадках. Для Linux та macOS (Mac OS X) було надано два хороших відповіді.
Webel IT Australia - upvoter

Відповіді:


637

Вміст /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 метадані
  • Зверніть увагу, що ці файли - це тонкі "розріджені" файли, тому вони не такі великі, як здаються.

1
Чи можу я бачити вміст всередині, певним чином монтуючи його?
rv

1
Якщо ви встановите драйвер пам’яті після того, як він вже запущений і в ньому є кілька запущених контейнерів із зображеннями, чи буде він мігрувати дату при наступному перезапуску демона? Якщо ні, то як змінити драйвер пам’яті в цьому випадку?
БТР Найду


91
Зробіть собі послугу і не «перевіряйте за замовчуванням». Використовуйте docker infoта знайдіть фактичне місцеположення, характерне для вашої установки .
Бруно Броноський

5
Це, здається, змінилося. Я використовую Docker for Macз 2 зображеннями по 1,5 ГБ кожен і /var/libне має каталогу docker.
miguelmorin

298

Під час використання Docker для Mac додатків виявляється, що контейнери зберігаються у ВМ, розташованому за адресою:

~/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 та всі зображення та контейнери в ньому.


7
Це розташування для всіх зображень (наприклад ubuntu, nginx) чи це місце для всіх контейнерів? Оригінальне запитання задає зображення , а не контейнери ...
Siu Ching Pong -Asuka Kenji-

2
Якщо ви пам’ятаєте, що Docker все ще працює у вітчизняній машині, шляхи до системи відносяться до VM, а не до системи Mac Osx. Спробуйте цю команду: docker run --rm -it -v /: / vm-root alpine: edge ls -l / vm-root nad після цього: docker run --rm -it -v /: / vm-root alpine: edge ls -l / vm-root / var / lib / docker Ви можете перелічити папку
docker

3
Це, здається, змінилося. Я використовую Docker for Macдва зображення по 1,5 ГБ кожен і ~/Library/Containers/Data/com.docker.docker/Dataне має каталогу, com.docker.driver.amd64-linuxі єдиний великий файл знаходиться в vms/0/Docker.raw3,6 ГБ.
miguelmorin

1
Чи буде використовуватися qcow2 або raw, залежить від того, чи перебуваєте ви в MacOS High Sierra з APFS або нижче: docs.docker.com/docker-for-mac/faqs/#disk-usage
Пітер

1
Перевірте розмір для макінтоша:du -hd1 ~/Library/Containers/com.docker.docker/Data/
Efren

122

це був старий спосіб поведінки, тепер він змінився. Нехтуйте цією відповіддю станом на 2019 рік

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

Цей VM буде зберігатися у звичайному місці зображень VirtualBox:

      ОС X: ~/VirtualBox VMs/boot2docker-vm

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

Ви можете скинути його, запустивши (УВАГА: Це знищить усі створені та завантажені зображення):

boot2docker down
boot2docker destroy
boot2docker init
boot2docker up

Це особливо корисно, якщо ви зберігали тонни проміжних зображень під час створення / налагодження збірки без корисних параметрів --rm, я цитую їх тут для довідки: Використовуйте:

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

замість:

docker build -t webapp .

16
Після нової установки Docker в Windows 10, я можу підтвердити, що в результаті першого натискання ярлика швидкого запуску термінала Docker створюється віртуальна машина (VM), яка називається "за замовчуванням" (після пари невдалих запусків - продовжуйте її працювати, поки це працює). Цей VM за замовчуванням можна розмістити в Windows за адресою: %USERPROFILE%\.docker\machine\machines (зверніть увагу на повну зупинку на шляху)
AnotherLongUsername

6
У новіших випусках boot2docker тепер докер-машина . Дивіться docs.docker.com/machine/migrate-to-machine
khylo

3
Чи можна змінити це місце?
dhblah

13
Відповідь більше не правильна для Windows 10. Натомість дивіться нову відповідь від @tristan, на яку посилаютьсяC:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx
aaronsteers

5
% USERPROFILE% \. Docker все ще правильний для налаштувань win7.
RMorrisey

119

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

$ docker info

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

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



8
Так, на жаль, ці два рядки "(Meta) файлу даних" відображаються не в кожному докері. Це залежить від використовуваного драйвера
Orabîg

@DmitryYudin mirosval відповідь працює для останнього Docker для Mac .
Франклін Ю

8
Правильна відповідь не «Це тут на моїй машині». Правильна відповідь - "Ось як це ви знайдете на ВАШІЙ машині". Це правильна відповідь. Я приєднався до компанії з 11 різними томами EBS, наповненими зображеннями докерів. Ця відповідь дозволила мені з’ясувати, яка була нинішня «Корінна діра».
Бруно Броноський

У Mac OS X (принаймні, на Yosemite, що є EOL wrt Docker), docker infoдуже корисно, але вихід Docker Root Dir: /var/lib/dockerне вказує місце зберігання зображень (див. Відповідь, специфічна для Mac вище).
Webel IT Australia - upvoter

70

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

C: \ Користувачі \ Громадські \ Документи \ Hyper-V \ Віртуальні жорсткі диски \ MobyLinuxVM.vhdx

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


13
Docker на Windows 10 Anniversary Update вміщує файли зображень C:\ProgramData\docker\windowsfilterдля мене. Більш детальна інформація: stackoverflow.com/a/39971954/188740
Джонні Oshika

1
"Hyper-V Manager" - це відповідь!
Реза

68

Зображення зберігаються в /var/lib/docker/graph/<id>/layer .

Зауважте, що зображення просто відрізняються від батьківських зображень. Батьківський ідентифікатор зберігається з метаданими зображення/var/lib/docker/graph/<id>/json .

Коли ти docker runзображення. AUFS 'об'єднає' всі шари в одну корисну файлову систему.


11
Ця відповідь застаріла, вони перемістили речі.
Повітря

7
@Air Чи можете ви розмістити те, що перемістилося?
Ілля Лінн

1
папки з
Падді

49

На Ubuntu можна «грати» із запущеними зображеннями

sudo baobab /var/lib/docker

Власне, зображення зберігаються всередині /var/lib/docker/aufs/diff

скріншот, на якому показано інструмент дискового аналізатора baobab, що працює на / var / lib / docker


Справді добре. На Mac DaisyDisk схожий (дисплей колеса), GrandPerspective також корисний (прямокутники).
Webel IT Australia - upvoter

Здається, це єдиний надійний спосіб її знайти.
Олександр

48

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


3
Я не можу знайти жодної папки контейнерів чи зображень всередині цього каталогу.
lvarayut

3
шукайте disk.vmdk у цьому каталозі
lukeaus

1
$ docker images -дає близько 1 гіга зображень, тоді як disk.vmdk в ~ / .docker становить близько 20 гігів. Як це?
Грав

Де він зберігається в Windows?
Шреяс

@Grav: Віртуальна машина виділяє 20 концертів для подальшого використання, але використовує лише 1 гіг для зображень.
primavera133

22

У Docker для Windows (рідна Windows) зберігання контейнерів за замовчуванням знаходиться на:

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

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

22

Якщо ви використовуєте Docker для MAC (не boot2docker), то місцезнаходження/Users/<</>UserName></>/Library/Containers/com.docker.docker/Data/


Так, коли я зробив: jasper@~/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я знайшов зображення. Але це не контейнери. Не бачите їх у цьому каталозі даних насправді ..
rhand

1
Але, як зазначено раніше, тут stackoverflow.com/a/37642236/460885 контейнери знаходяться всередині цього зображення.
rhand

7

Як відповів тут , якщо ви перебуваєте на Mac, він знаходиться за адресою

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

2
Docker.qcow2? Як я можу витягти з цього певне зображення докера?
AlxVallejo

7

Розширюючись на відповідь Трістана, у Windows з Hyper-V ви можете перемістити зображення за допомогою цих кроків від matthuisman:

У Windows 10

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

2
Це переміщує лише машину Hyper-V, а не зображення, але зображення все одно зберігатимуться там, де знаходиться VHD-розташування.
olive_tree

@olive_tree Я намагаюся знайти зображення, створені docker buildкомандою. Я на комп'ютері з Windows 10. Я дивлюся на C: \ Users \ Public \ Documents \ Hyper-V \ Віртуальні жорсткі диски, але все, що я бачу, це MobyLinuxVM.vhdx. Де зберігаються фактичні зображення?
користувач3731622

5

Якщо ви пам’ятаєте, що Docker все ще працює у вітчизняній машині, шляхи до системи відносяться до VM, а не до системи Mac Osx. Як мовиться, все міститься у файлі VM:

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

Спробуйте запустити зображення Alpine з цією опцією гучності та командою ls, за допомогою якої ви можете перелічити хост VM:

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

Після цього просто спробуйте:

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

Тепер ви можете перелічити папку докера від хоста VM


Дякую! Це єдина відповідь, яка працювала для мене в Windows 10 з Hyper-v. Мені вдалося очистити пошкоджені файли у папці elusive / var / lib / docker / overlay2.
Алі Чейто

4

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


4

Я можу відповісти на це питання лише для користувачів Ubuntu:

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

У цьому рядку буде вказано каталог Docker: " Docker Root Dir: /var/lib/docker"

Про зображення докера вони зберігаються всередині каталогу докерів: /var/lib/docker/aufs/diff/

Пам'ятайте, що ці речі не однакові у всіх версіях докера. Наразі я використовую 1.12.3.


4

Використовуйте 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"]]

3

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


3

перевірити наявність папки докера в /var/lib

зображення зберігаються в нижньому місці:

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

4
це лише папка sha256
до

Я думаю , що ви мали в виду просто: /var/lib/docker/image/overlay2/. Також зауважте, що це так через те, що ваш двигун Docker використовується overlay2як драйвер зберігання.
Гай Аврахам

3

використовувати docker inspect container_id
папку пошуку під MergedDir

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

3

Для "Докерного робочого столу" натисніть на піктограму системного лотка докерів і натисніть "Налаштування". введіть тут опис зображення

На вкладці «Додатково» ви можете бачити зображення диска.

введіть тут опис зображення


2

Навколишнє середовище: Windows 10 Pro, докерський робочий стіл 2.0.3.0 край

клацніть правою кнопкою миші значок докера в системному треї, виберіть налаштування - розширені:

Розташування образу диска (можна редагувати через браузер):

C: \ Користувачі \ Громадські \ Документи \ Hyper-V \ Віртуальні жорсткі диски \ DockerDesktop.vhdx

(це там - каталог документів приховано)


Чи C: \ Users \ Public \ Documents \ Hyper-V \ Virtual Hard Disks \ DockerDesktop.vhdx зображення, створене docker buildкомандою?
користувач3731622


1

У 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 .


1

У Windows 2016 докер (DockerMsftProvider) використовує папку "windowsfilter" під коренем docker

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

Він використовує папку "tmp" під коренем докера для завантаження файлів і видаляє файли після вилучення завантажених файлів у папку "windowsfilter".


0

На Debian Unstable / Sid,

docker info знайти загальносистемну інформацію.

зображення зберігаються в /var/lib/docker/image/overlay2/imagedb/contentі

контейнери зберігаються в /var/lib/docker/containers

версія докера, версія 18.06.0-ceAPI1.38


0

Я не зміг вирішити питання з 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

Сподіваюся, це допомагає і іншим.


0

Зображення зберігаються всередині, /var/lib/dockerа потім у відповідному storage driverкаталозі.

Драйвер зберігання, який використовується, може бути визначений командою виконання docker info.


0

Згідно з посібником із роботи Docker Getting Star "ваш вбудований образ" знаходиться в локальному реєстрі зображень Docker на вашій машині. "

введіть тут опис зображення

Мені це все ще дивно, бо зараз це призводить до питання. Де локальний реєстр зображень Docker на моїй машині?

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


Ха-ха TBH Я думаю, що це максимум коментар. Буде чудовим коментарем, хоча!
Mong H. Ng

0

Якщо комусь це потрібно для цілей сценарію, ось однолінійне рішення.

У оболонці 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 контейнери"

У CentOS мені довелося користуватися DOCKER_ROOT_DIR="$(sudo docker info 2>&1 | grep -oP '(?<=Data loop file: ).*')", але врешті-решт це файл, а не каталог
HairOfTheDog

Ви впевнені, що це не каталог? Для мене, sudo ls "$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"список вмісту цього каталогу.
вулкан ворон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.