Что такое расположение образа докера в Windows 10

У меня установлена ​​операционная система Windows 10 Home. Я установил панель инструментов Docker.

Я создал образ докера моего основного приложения.net с помощью следующей команды.

$  docker build -t helloWorld:core .

Теперь я хочу отправить это изображение на другую машину. Но я не получаю файл изображения.

Может кто-нибудь сказать, пожалуйста, где будет сохранено мое изображение? Или есть какой-либо способ, чтобы указать путь к образу docker в команде сборки docker.

24 ответа

Все ответы для меня устарели или неверны, я нашел в %AppData%\Local\Docker\wsl

Ответы действительно сбивают с толку, потому что есть несколько способов запустить Docker в Windows. Новейший способ - Windows 10 Home May 2020 Update. Я буду использовать новую версию подсистемы Windows для Linux (WSL2).

После активации WSL2 вы установите Docker Desktop. Docker Desktop - это клиент, который будет подключаться к хосту внутри WSL.

Каталог изображений несколько непоследователен. Если ты бежишьdocker info на вашем хост-компьютере или внутри WSL он даст вам путь Docker Root Dir: /var/lib/docker которого не существует:

$ ls /var/lib/docker
ls: cannot access '/var/lib/docker': No such file or directory

Вы найдете изображения в

/mnt/wsl/docker-desktop-data/

Или по этому пути в проводнике Windows:

\\wsl$\docker-desktop-data\mnt\wsl\docker-desktop-data\data\docker\image

Если вы используете не домашнюю версию Windows 10, она может работать иначе. Взгляните на другие ответы. Поскольку у меня нет доступа к этой ОС, я не буду отвечать.

В Windows 10 щелкните правой кнопкой мыши значок докера на панели задач (справа от панели задач) и выберите "Настройки". На панели "Дополнительно" вы увидите что-то вроде:

  1. Используя docker info команда.
  2. В результате - проверка на Docker Root Dir

Эта папка будет содержать изображения, контейнеры, ...

Если вы используете докер в подсистеме Windows для Linux (WSL2), вы можете получить доступ к изображениям через скрытый общий ресурс:

\\wsl$\docker-desktop-data\version-pack-data\community\docker\overlay2

Тома также есть по адресу:

\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes

Если вы используете Windows 10 и используете контейнеры Windows

На изображении выше докер запускает контейнеры Windows. Итак, это показывает переход на контейнеры Linux.

Первый забег docker info команда (более конкретная docker info --format “{{json .DockerRootDir}}”).

Вы должны увидеть корневой каталог как

Корневой каталог Docker: C:\ProgramData\Docker

Теперь запустите команду, чтобы вытащить изображение вроде

docker pull hello-world

После того, как он извлечет изображение, вы можете заглянуть в корневой каталог докера.

Обратите внимание на текущую измененную дату и время. В одной из папок вы можете увидеть ша слоев.

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

  • C:\ProgramData\Docker\ изображение \windowsfilter
  • C:\ProgramData\Docker\windowsfilter

Теперь о образах Linux.

Если ваш докер запускает контейнеры Windows, а затем, если вы попытаетесь получить контейнер на основе Linux, такой как nginx, например

docker pull nginx:latest

вы получите следующее сообщение.

latest: Pulling from library/nginx
no matching manifest for windows/amd64 10.0.18363 in the manifest list entries

Так что переходите на linux contaners. Смотрите самое первое изображение.

Как только докер для Linux запущен, снова запустите команду.

docker pull nginx:latest

Вы можете видеть, что изображение загружается.

А где этот образ загружен на ваш жесткий диск? Команда docker info в этом случае может не сильно помочь.

Итак, начнем снова. Нажмите "Настройки", а не "Переключиться на контейнеры Windows..."

А теперь посмотрим на путь.

На моей машине это C:\ProgramData\DockerDesktop\vm-data

Обратите внимание на столбец даты изменения. Обратите внимание и обратите внимание на это после того, как вы вытащите или удалите образ на основе Linux.

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

но если вам нужно, запустите виртуальную машину на базе Linux, установите докер и исследуйте путь /var/lib/docker/

Иногда могут возникнуть проблемы с разрешением. Если да, посмотрите это и это

Когда у вас активированы контейнеры Windows, ваши изображения по умолчанию сохраняются в C:\ProgramData\Docker\

Чтобы изменить это, вы можете отредактировать C:\ProgramData\Docker\config\daemon.json и добавить новый "graph" ключ с новым путем... (обратите внимание, что каждый обратный слеш экранируется другим обратным слешем)

Пример:

{
  "registry-mirrors": [],
  "insecure-registries": [],
  "debug": true,
  "experimental": false,
  "graph": "D:\\ProgramData\\Docker"
}

После этого вам нужно перезапустить сервис Docker, и вы можете проверить свои изменения, используя docker info командовать и смотреть на Docker Root Dir запись.

Мне не удалось найти расположение установки Docker на основе WSL. Но есть простой способ получить изображение с помощью самих команд docker!

docker image save myimagename -o myimagename.img

Это создает непосредственно файл изображения.

В недавнем Docker Desktop, который теперь использует WSL, местоположение изменено -

(last checked with Docker Desktop Community version 2.3.0.3)

Сначала используйте Run - и введите \\wsl$

Это откроет файловый менеджер и отобразит -

  1. docker-desktop
  2. docker-desktop-data

Просмотрите каталоги, чтобы увидеть необходимые файлы.

На сегодняшний день, 29 августа 2022 г.:

Здесь:

      %localappdata%\Docker\wsl

И здесь:

      C:\ProgramData\DockerDesktop\vm-data

А в старые времена это было здесь:

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

Так да. ProgramData, AppData, Documents и т. д. и т. д. они могут храниться где угодно на вашем диске. Docker — совершенно неорганизованный продукт. Тратится много-много времени разработчиков на выяснение мелочей.

Мой может быть найден в "C:\Users\Public\Documents\Hyper-V\ Виртуальные жесткие диски"

Вы можете использовать приведенную ниже команду для экспорта своего изображения и можете скопировать его в linux / экспорт на другую машину Docker [ОПЦИИ] КОНТЕЙНЕР

пример:

docker export --output="latest.tar" red_panda

Чтобы отправить это изображение на другую машину:

docker ps -a  
#or docker container ls -a
docker commit <container-id> mynewimage
#start here if you never started your image 
#(ex: if just created using docker build -t helloWorld:core .)
docker image ls
docker save mynewimage > /tmp/mynewimage.tar

На другой машине:

docker load < /tmp/mynewimage.tar
docker images

Как объяснено в комментариях выше, при работе с окнами с контейнерами Linux контейнеры находятся в образе диска докера, расположенном в DockerDesktop/settings/advanced/DiskImageLocation.

посмотреть здесь

Рабочий стол докера для Windows 10 перемещен сюда:

c:/ пользователи /<user>/AppData/Roaming/Docker/settings.json

Для меня, работающего в Windows 10 Professional версии 20H2 с Docker Desktop 4.5.1 (74721), расположение изображений, похоже, находится в моем пользовательском каталоге, как показано на следующем рисунке.

Он должен быть здесь:

      C:\ProgramData\Docker\tmp\

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

      $ docker save -o ubuntu.tar ubuntu:lucid ubuntu:saucy

Он сохранит tar-файл в вашем домашнем каталоге Windows. Чтобы загрузить его:

      $ docker load --input ubuntu.tar

Для меня контейнеры находились ниже при использовании рабочего стола Docker в Windows с WSL2.

С двигателем:20.10.17(Windows 10), я нашел свой док-контейнер по пути:\\\wsl.localhost\docker-desktop-data\data\docker\containers

Вы можете увидеть детали ниже:

(поскольку многие ответы устарели, и у меня нет репутации 50, чтобы просто комментировать, да)

Файлы Docker Desktop для Windows находятся здесь: C:\Users\USERNAME\AppData\Local\Docker\wsl.

Вероятно, лучше экспортировать то, чем вы хотите поделиться (пример веб-козы OWASP10)

docker save -oc:\temp\mygoat.tar webgoat/goatandwolf

Я подозреваю, что другой пользователь может затем его подобрать, используя

docker load --input c:\temp\mygoat.tar

В моем случае я устанавливаю docker-desktop на wsl2, windows 10 home. я нахожу свои файлы изображений в

      \\wsl$\docker-desktop-data\version-pack-data\community\docker\overlay2

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

Хотя терминал показывает путь «var / lib / docker», но папка не закрывается и фактические файлы там не хранятся. Я думаю, что ошибки нет, "var / lib / docker" просто связан или сопоставлен с реальной папкой, вроде этого. В windows мы также используем mklink для связывания двух папок, это похоже, правда?

Это сработало для меня:

      %USERPROFILE%/.docker/config.json

Я использую Windows 10 Home Version 2004 с Docker 19.03.8. У этого есть новый бэкэнд WSL - в этой конфигурации запустите приглашение WSL (Win-r, затем wsl для запуска), а мои файлы изображений находятся в /mnt/host/wsl/docker-desktop-data/data/docker

По умолчанию он внутри C:\Users\Public\Documents\Hyper-V\Virtual hard disksкаталог (файл.vhdx). Его можно изменить в настройках Docker> Дополнительно> Расположение образа диска.

Другие вопросы по тегам