在 Windows10中,Docker 映像位置在哪里?

我用的是 Windows10家庭操作系统。 我已经安装了 Docker 工具箱。

我使用以下命令创建了.net 核心应用程序的 docker 映像。

$  docker build -t helloWorld:core .

现在我想把这个映像发送到另一台机器上,但是我没有得到这个映像文件。

谁能告诉我,我的形象会在哪里得到保存?或者有任何方法,在 docker build 命令中指定 docker 图像路径。

224163 次浏览
  1. 通过使用 docker info命令。
  2. Docker Root Dir的结果检查中

这个文件夹将包含图像,容器,..。

enter image description here

我可以在“ C: 用户公共文档 Hyper-V 虚拟硬盘”中找到

在 Windows10上,右键单击系统托盘(任务栏的右侧)中的 docker 图标,然后选择 Settings..。 在 Advanced 窗格中,您将看到如下内容:

enter image description here

您可以使用下面的命令导出您的映像,并将其复制到 linux/另一台机器上 码头出口[选择]集装箱

例如:

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

当您激活 视窗容器时,您的图像默认存储在 C:\ProgramData\Docker\

要改变这一点,您可以编辑 C:\ProgramData\Docker\config\daemon.json并添加一个新的 "graph"键与新的路径... (请注意,每个反斜杠转义与另一个反斜杠)

例如:

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

之后,您需要 重新启动码头服务,您可以使用 docker info命令验证您的更改,并查看 Docker Root Dir条目。

Windows10的 Docker 桌面已经移到这里:

C:/users/<user>/AppData/Roaming/Docker/setings.json

把这个图像传送到另一台机器:

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/sets/Advanced/DiskImageLocation 的 docker 磁盘映像中

给你

默认情况下,它在 C:\Users\Public\Documents\Hyper-V\Virtual hard disks目录(. vhdx 文件)中。 它可以在 Docker 的设置 > Advanced > Disk image location 中更改

如果您在运行 Windows 10和 Windows 容器

docker running windows containers

在上图中,docker 正在运行 windows 容器,所以它的显示切换到了 linux 容器。

首先运行 docker info命令(更具体的 docker info --format “\{\{json .DockerRootDir}}”)。

您应该看到 root dir 为

C: ProgramData Docker

现在运行一个命令来拉一个图像,如

docker pull hello-world

在它拉出图像之后,您可以查看 docker 根目录。

注意当前修改的日期时间。在其中一个文件夹中,你可以看到图层的沙。

Docker location on windows

最后,如果您想知道图像的下载位置,还必须查看以下文件夹。上面和下面的两个文件夹是

  • C: ProgramData Docker 图像窗口过滤器
  • C: ProgramData Docker 窗口过滤器

Docker location

现在是 Linux 图像。

如果您的 Docker 正在运行 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 容器。

在运行 linux 的 docker 之后,再次运行该命令。

docker pull nginx:latest

可以看到图像正在下载。

现在这张图片下载在你的硬盘上的什么地方? docker info 命令在这种情况下可能帮不上什么忙。

所以重新开始。单击“设置”,现在“切换到 Windows 容器... ...”

Settings On Docker Desktop for linux containers

现在看看路。

Settings Page on docker desktop showing the path

在我的机器上,是 C:\ProgramData\DockerDesktop\vm-data

LinuxImages location

注意日期修改列。注意并观察在您拉出或删除一个基于 linux 的映像之后。

这是一个为 linux env 保留的磁盘空间,因此您将无法进一步向下浏览以查看映像的位置。

但如果必须这样做,那么启动一个基于 linux 的虚拟机,安装 docker 并探索这条路径 /var/lib/docker/

有时您可能会遇到权限问题。如果是这样,请参阅 这个这个

这些答案实在令人困惑,因为在 Windows 中运行 Docker 的方式不止一种。最新的方法是 Windows10家庭2020年5月更新。它将使用新版本的 Linux Windows 子系统(WSL2)。这个答案是关于这个配置的。

启动 WSL2之后,您将安装 Docker 桌面。 Docker Desktop 是一个连接到 WSL 内部主机的客户端。

图像目录有些不一致。如果你在你的主机或者 WSL 里面运行 docker info,它会给你不存在的路径 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/

或者以这种文件资源管理器的方式:

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

如果您使用的是 Windows10非家庭版本,它的工作方式可能会有所不同。看看其他的答案。因为我无法访问这个操作系统,所以我不会尝试回答。

所有的答案对我来说都已经过时或不正确,我在 %localappdata%\Docker\wsl中找到的

我使用 Docker 19.03.8在 Windows 10 Home Version 2004上运行。在这个配置中有新的 WSL 后端,启动一个 WSL 提示符(Win-r 然后启动 WSL) ,我的映像文件在/mnt/host/WSL/docker-desk-data/data/docker 下面

我找不到基于 WSL 的 Docker 安装的位置。但有一个简单的方法与 docker 命令本身获取图像!

docker image save myimagename -o myimagename.tar

这将创建一个存档文件,您可以使用7zip 或类似的程序浏览该文件。

我不知道你为什么要访问这个映像,但是你可以使用 docker 命令创建一个备份文件,然后在你想要的地方加载它。例如:

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

它将在 Windows 主目录中保存一个 tar 文件。加载它:

$ docker load --input ubuntu.tar

应该在这里:

C:\ProgramData\Docker\tmp\

如果您正在 Windows 子系统上使用 docker for Linux (WSL2) ,您可以通过隐藏共享访问图像:

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

这些数量还包括:

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

码头版本是 20.10.7

enter image description here

如果您想深入一些,那么 docker-desktop-data实际上作为 vhdx(虚拟机磁盘) C:\Users\YOUR_USER_NAME\AppData\Local\Docker\wsl\data\ext4.vhdx位于 AppData\Local的一个文件中

您可以终止 docker 进程并打开 ext4.vhdx文件(例如,使用7zip) ,在这个文件中可以看到 version-pack-data\community\docker

对我来说,当在 Windows 和 WSL2上使用 Docker 桌面时,这些容器位于 ALT = “ Docker Desktop 中的容器位置”/> 之下。

在最近使用 WSL 的 Docker 桌面中,Windows10中的 Docker 映像位置发生了变化

(last tested with Docker Desktop Community version 2.3.0.3)

首先使用 Run-并键入 \\wsl$

这将打开文件资源管理器,并显示文件夹如下-

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

浏览这些目录以查看所需的文件

enter image description here

这对我很有效:

%USERPROFILE%/.docker/config.json

对于我来说,运行在 Windows10专业版20H2与 DockerDesktop4.5.1(74721)上,图像的位置似乎在我的用户目录下,如下图所示。

enter image description here

截至今日2022年8月29日:

这里:

%localappdata%\Docker\wsl

还有这里:

C:\ProgramData\DockerDesktop\vm-data

在过去,它就在这里:

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

所以是的。ProgramData、 AppData、 Document 等等,它们可以存储在磁盘上的任何地方。Docker 是一个完全没有组织的产品。浪费大量的时间让开发人员去解决一些小问题。