我正在使用Windows 10 Home操作系统。 我已经安装了Docker工具箱。
我使用以下命令创建了.net核心应用程序的docker镜像。
$ docker build -t helloWorld:core .
现在我想将此图片发送到其他机器。但我没有得到图像文件。
有人可以告诉我,我的图片会保存在哪里吗?或者有什么办法,在docker build命令中指定docker image path。
答案 0 :(得分:24)
答案 1 :(得分:24)
答案确实令人困惑,因为在Windows中运行Docker的方式不止一种。最新方法是Windows 10 Home May 2020 Update。我将使用Linux的Windows子系统(WSL2)的新版本。
在activating WSL2之后,您将安装Docker Desktop。 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/
或在此Windows资源管理器路径中:
\\wsl$\docker-desktop-data\mnt\wsl\docker-desktop-data\data\docker\image
如果您使用的是Windows 10非家庭版,则可能会有所不同。看看其他答案。由于我无权访问此操作系统,因此我不会尝试回答。
答案 2 :(得分:9)
对我来说,所有答案都已过时或不正确,我在%AppData%\Local\Docker\wsl
中找到了答案
答案 3 :(得分:9)
如果您在Windows 10上并且正在运行Windows容器
在上图中,docker正在运行Windows容器。因此,显示切换到linux容器。
首先运行docker info
命令(更具体的docker info --format “{{json .DockerRootDir}}”
)。
您应该将根目录视为
Docker根目录:C:\ ProgramData \ Docker
现在运行命令以拉出类似图像
docker pull hello-world
拉出映像后,您可以查看docker根目录。
注意当前的修改日期时间。在其中一个文件夹中,您可以看到图层的阴影。
最后,如果您想知道图像的下载位置,则还必须查看以下文件夹。上方和下方的两个文件夹是
现在可用于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容器。看到第一张图片。
用于Linux的docker运行后,再次运行命令。
docker pull nginx:latest
您可以看到该图像正在下载。
现在此映像从哪里下载到您的硬盘上?在这种情况下,docker info命令可能无济于事。
所以重新开始。单击设置,而不是“切换到Windows容器...”
现在查看路径。
在我的计算机上,它是C:\ProgramData\DockerDesktop\vm-data
请注意修改日期列。注意并观察到,在拉出或删除基于Linux的映像之后。
这是为Linux env保留的磁盘空间,因此您将无法进一步浏览以查看映像所在的位置。
但如果需要,则启动基于Linux的VM,安装docker并探索路径 / var / lib / docker /
答案 4 :(得分:8)
答案 5 :(得分:7)
答案 6 :(得分:2)
我不知道您为什么要访问该映像,但是您可以仅使用 docker 命令从中创建一个备份文件,然后将其加载到您希望的位置。示例:
$ docker save -o ubuntu.tar ubuntu:lucid ubuntu:saucy
它将在您的 Windows 主目录中保存一个 tar 文件。加载它:
$ docker load --input ubuntu.tar
答案 7 :(得分:2)
如果您在 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
docker 版本为 20.10.7
答案 8 :(得分:1)
激活 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
条目。
答案 9 :(得分:1)
您可以使用以下命令导出图像,并将其复制到linux /另一台机器 docker export [OPTIONS]容器
示例:
--force
答案 10 :(得分:1)
它应该在这里:
$ curl -k -X POST https://localhost:5001/xml -d '<foo>bar</foo>' -i --header "Content-Type: text/xml"
$ curl -k -X POST https://localhost:5001/xml -d '<foo>bar</foo>' -i --header "Content-Type:application/xml"
答案 11 :(得分:0)
要将此图像发送到另一台机器:
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磁盘映像内。请参阅here
答案 12 :(得分:0)
Windows 10的Docker桌面已移至此处:
c:/ users / <user>
/ AppData / Roaming / Docker / settings.json
答案 13 :(得分:0)
我找不到基于WSL的Docker安装的位置。但是docker命令本身有一种简单的方法来获取映像!
docker image save myimagename -o myimagename.img
这将直接为您创建一个图像文件。
答案 14 :(得分:0)
答案 15 :(得分:0)
在最近使用 WSL 的 Docker 桌面中,位置已更改 -
(last checked with Docker Desktop Community version 2.3.0.3)
首先使用 Run - 并输入 \\wsl$
这将打开文件资源管理器,并显示 -
docker-desktop
docker-desktop-data
浏览目录以查看所需文件。
答案 16 :(得分:-1)
默认情况下,它位于C:\Users\Public\Documents\Hyper-V\Virtual hard disks
目录(.vhdx文件)内。
可以在Docker的设置>高级>磁盘映像位置中更改它
答案 17 :(得分:-1)
我正在Windows 10 Home Version 2004和Docker 19.03.8上运行。它具有新的WSL后端-在该配置中,启动WSL提示符(Win-r,然后启动wsl),我的图像文件位于/ mnt / host / wsl / docker-desktop-data / data / docker >