Что такое расположение образа докера в 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 щелкните правой кнопкой мыши значок докера на панели задач (справа от панели задач) и выберите "Настройки". На панели "Дополнительно" вы увидите что-то вроде:
- Используя
docker info
команда. - В результате - проверка на 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$
Это откроет файловый менеджер и отобразит -
-
docker-desktop
-
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), расположение изображений, похоже, находится в моем пользовательском каталоге, как показано на следующем рисунке.
Я не знаю, почему вы пытаетесь получить доступ к изображению, но вы можете создать из него файл резервной копии, просто используя команду docker, и затем загрузить его, где захотите. Пример:
$ docker save -o ubuntu.tar ubuntu:lucid ubuntu:saucy
Он сохранит tar-файл в вашем домашнем каталоге Windows. Чтобы загрузить его:
$ docker load --input ubuntu.tar
С двигателем: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 для связывания двух папок, это похоже, правда?
Я использую 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> Дополнительно> Расположение образа диска.