我使用的是 Windows 10 家庭版操作系统。我已经安装了 Docker 工具箱。
我使用以下命令创建了我的 .net 核心应用程序的 docker 映像。
$ docker build -t helloWorld:core .
现在我想将此图像发送到另一台机器。但我没有得到图像文件。
有人可以告诉我,我的图像将保存在哪里?或者有什么方法可以在 docker build 命令中指定 docker 镜像路径。
我使用的是 Windows 10 家庭版操作系统。我已经安装了 Docker 工具箱。
我使用以下命令创建了我的 .net 核心应用程序的 docker 映像。
$ docker build -t helloWorld:core .
现在我想将此图像发送到另一台机器。但我没有得到图像文件。
有人可以告诉我,我的图像将保存在哪里?或者有什么方法可以在 docker build 命令中指定 docker 镜像路径。
所有答案对我来说都已过时或不正确,我在"%localappdata%\Docker\wsl"
答案确实令人困惑,因为在 Windows 中运行 Docker 的方法不止一种。最新的方法是使用 Windows 10 Home 2020 年 5 月更新。它将使用新版本的适用于 Linux 的 Windows 子系统 (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 容器后,您的图像默认存储在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
条目。
如果您在 Windows Subsystem for Linux (WSL2) 上使用 docker,您可以通过隐藏共享访问图像:
\\wsl$\docker-desktop-data\version-pack-data\community\docker\overlay2
这些卷也存在于:
\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes
码头工人版本是20.10.7
如果您想更深入,docker-desktop-data
实际上位于您AppData\Local
作为vhdx
(虚拟机磁盘)的文件中C:\Users\YOUR_USER_NAME\AppData\Local\Docker\wsl\data\ext4.vhdx
您可以终止 docker 进程并打开ext4.vhdx
文件(例如使用 7zip),您可以version-pack-data\community\docker
在此文件中看到。
我的可以在“C:\Users\Public\Documents\Hyper-V\Virtual hard disks”中找到
我找不到基于 WSL 的 Docker 安装的位置。但是有一个简单的方法是使用 docker 命令本身来获取图像!
docker image save myimagename -o myimagename.tar
这将创建一个存档文件,您可以使用 7zip 或类似程序浏览。
您可以使用以下命令导出图像并可以将其复制到 linux / 另一台机器 docker export [OPTIONS] CONTAINER
例子:
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 容器的 Windows 上工作时,容器驻留在位于 DockerDesktop/settings/advanced/DiskImageLocation 的 docker 磁盘映像中
看这里
Windows 10 的 docker 桌面已移至此处:
c: <user>
/users//AppData/Roaming/Docker/settings.json
我不知道您为什么要尝试访问该图像,但是您可以使用 docker 命令从中创建一个备份文件,然后将其加载到您希望的位置。例子:
$ docker save -o ubuntu.tar ubuntu:lucid ubuntu:saucy
它将在您的 Windows 主目录中保存一个 tar 文件。要加载它:
$ docker load --input ubuntu.tar
它应该在这里:
C:\ProgramData\Docker\tmp\
这对我有用:
%USERPROFILE%/.docker/config.json
我在带有 Docker 19.03.8 的 Windows 10 Home Version 2004 上运行。这具有新的 WSL 后端 - 在该配置中,启动 WSL 提示符(Win-r 然后启动 wsl)并且我的图像文件位于 /mnt/host/wsl/docker-desktop-data/data/docker
默认情况下,它位于C:\Users\Public\Documents\Hyper-V\Virtual hard disks
目录内(.vhdx 文件)。可以在 Docker 的设置 > 高级 > 磁盘映像位置中更改它