Мне удалось найти контейнеры под каталогом /var/lib/docker/containers
, но я не могу найти изображения.
Каковы каталоги и файлы в разделе /var/lib/docker
?
Мне удалось найти контейнеры под каталогом /var/lib/docker/containers
, но я не могу найти изображения.
Каковы каталоги и файлы в разделе /var/lib/docker
?
Содержимое каталога /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
метаданныеПри использовании 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 и все образы и контейнеры внутри него.
В специальном случае 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 .
Собственно, изображения Docker хранятся в двух файлах, как показано в следующей команде
$ docker info
Файл данных:
/var/lib/docker/devicemapper/devicemapper/data
Файл метаданных:
/var/lib/docker/devicemapper/devicemapper/metadata
Изображения сохраняются в /var/lib/docker/graph/<id>/layer
.
Обратите внимание, что изображения просто отличаются от исходного изображения. Идентификатор родителя хранится с метаданными изображения /var/lib/docker/graph/<id>/json
.
Когда вы docker run
изображение. AUFS "объединит" все слои в одну удобную файловую систему.
В недавно выпущенном "Docker for Windows", который использует Hyper-V, данные находятся на виртуальном жестком диске Docker:
C:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx
Вы также можете открыть "Менеджер Hyper-V" для доступа к Docker/MobyLinuxVM.
Для тех, кто использует панель инструментов Docker (которая использует докер-машину), ответы, касающиеся boot2docker в Mac OS X, недействительны. Доклер-машина VM называется "по умолчанию" и существует в каталоге /Users/<username>/.docker/machine/machines/default/
.
В Ubuntu вы можете "играть" с запущенными изображениями
sudo baobab /var/lib/docker
Собственно, изображения хранятся в пределах /var/lib/docker/aufs/diff
В Docker для Windows (родная Windows) хранилище контейнеров по умолчанию:
> docker info
...
Docker Root Dir: C:\ProgramData\Docker
...
Если вы используете Docker для MAC (не boot2docker
), то местоположение /Users/<</>UserName></>/Library/Containers/com.docker.docker/Data/
Как ответил здесь, если вы находитесь на Mac, он находится в
/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
Расширяя ответ Tristan, в Windows с Hyper-V вы можете переместить изображение с помощью следующих шагов из matthuisman:
В Windows 10
- Стоп докер и т.д.
- Введите "Диспетчер Hyper-V" в поле поиска панели задач и запустите его.
- Выберите свой ПК в левой панели (мой называется DESKTOP-CBP **)
- Щелкните правой кнопкой мыши на правильной виртуальной машине (моя называется MobyLinuxVM)
- Выберите "Выключить" (если он запущен)
- Щелкните правой кнопкой мыши еще раз и выберите "Переместить"
- Следуйте инструкциям
Я использую 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 все еще работает в виртуальной машине, системные пути относятся к виртуальной машине, а не из системы 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
В Docker для Windows журналы находятся здесь: %USERPROFILE%\AppData\Local\Docker
проверьте папку докера в /var/lib
изображения хранятся в расположении ниже:
/var/lib/docker/image/overlay2/imagedb/content
Используйте команду 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"]]
Окружающая среда: Windows 10 Pro, Docker Desktop 2.0.3.0 край
щелкните правой кнопкой мыши значок докера в области уведомлений, выберите настройки - дополнительно:
Расположение образа диска (редактируется через браузер):
C:\Users\Public\Documents\Hyper-V\Виртуальные жесткие диски \DockerDesktop.vhdx
(это там - каталог документов скрыт)
В 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.
На 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
В Windows 2016 докер (DockerMsftProvider) использует папку "windowsfilter" в корневом каталоге докера.
>docker info
...
Storage Driver: windowsfilter
...
Docker Root Dir: C:\ProgramData\docker
...
Он использует папку "tmp" в корневом каталоге докера для загрузки файлов и удаляет файлы после извлечения загруженных файлов в папку "windowsfilter".
Я не смог решить вопрос с 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
Надеюсь, что это помогает другим.
Изображения хранятся в /var/lib/docker
а затем в соответствующем каталоге storage driver
.
Используемый драйвер хранилища можно определить, выполнив команду docker info
.
Согласно руководству по началу работы с Docker "ваш встроенный образ" находится в "локальном реестре образов Docker".
Это все еще странно для меня, потому что теперь это приводит к вопросу. Где мой компьютер - локальный реестр образов Docker?
Тем не менее, я определенно думаю, что эта информация стоит поделиться в качестве ответа.
используйте docker inspect container_id
найти папку в MergedDir
# example.
"MergedDir": "/var/lib/docker/overlay2/f40cc2ea8912ec3b32deeef5a1542a132f6e918acb/merged
Для "Docker Desktop", нажмите на значок в панели задач Docker и нажмите "Настройки".
На вкладке "Дополнительно" вы можете увидеть расположение образа диска.
Если кому-то это нужно для сценариев, вот решение в одну строку.
В оболочке 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"И если вы хотите посмотреть, какие изображения у вас есть локально, вы должны запустить docker в интерактивном режиме с помощью команды bash (я думаю, что эта команда), чтобы получить обычное приглашение linux $. Затем запустите изображения докеров. Внутри mobylinux.vhdx в/var/lib/docker/находится локальный кеш.