Pur*_*aik 26 docker docker-compose docker-for-windows
我有Windows 10 Home操作系统.我已经安装了Docker工具箱.
我使用以下命令创建了.net核心应用程序的docker镜像.
$ docker build -t helloWorld:core .
Run Code Online (Sandbox Code Playgroud)
现在我想将此图像发送到其他机器.但我没有得到图像文件.
有人可以告诉我,我的图像会保存在哪里吗?或者有什么办法,在docker build命令中指定docker image path.
nev*_*ves 53
答案确实令人困惑,因为在 Windows 中运行 Docker 的方法不止一种。最新的方式是使用 Windows 10 Home 2020 年 5 月更新。它将使用适用于 Linux 的新版 Windows 子系统 (WSL2)。这个答案是关于这个配置的。
后激活WSL2,您将安装泊坞桌面。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
Run Code Online (Sandbox Code Playgroud)
你会在图片中找到
/mnt/wsl/docker-desktop-data/
Run Code Online (Sandbox Code Playgroud)
或在此 Windows 资源管理器路径中:
\\wsl$\docker-desktop-data\mnt\wsl\docker-desktop-data\data\docker\image
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 Windows 10 非家庭版,它的工作方式可能会有所不同。看看其他答案。由于我无法访问此操作系统,因此我不会尝试回答。
use*_*075 44
所有的答案对我来说已经过时或不正确,我在 %AppData%\..\Local\Docker\wsl
Ali*_*ahi 39
如果您在 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
如果你想更深入,它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在该文件中看到。
Joh*_*ohn 31
在Windows 10上,右键单击系统托盘(任务栏右侧)中的泊坞窗图标,然后选择设置...在高级窗格中,您将看到如下内容:
evg*_*nyl 19
docker info命令.此文件夹将包含图像,容器,......
Viv*_*Dev 16
如果您使用的是 Windows 10 并运行 Windows 容器
在上图中,docker 正在运行 Windows 容器。所以它显示切换到linux容器。
首次运行docker info命令(更具体docker info --format “{{json .DockerRootDir}}”)。
你应该看到根目录为
Docker 根目录:C:\ProgramData\Docker
现在运行一个命令来拉一个像
docker pull hello-world
Run Code Online (Sandbox Code Playgroud)
拉取图像后,您可以查看 docker 根目录。
注意当前修改的日期时间。在其中一个文件夹中,您可以看到图层的 sha。
最后,如果您想知道图像的下载位置,还必须查看以下文件夹。上下两个文件夹是
现在用于 linux 图像。
如果您的 docker 正在运行 Windows 容器,然后如果您尝试获取基于 linux 的容器,例如 nginx,则如下所示
docker pull nginx:latest
Run Code Online (Sandbox Code Playgroud)
您将收到如下消息。
latest: Pulling from library/nginx
no matching manifest for windows/amd64 10.0.18363 in the manifest list entries
Run Code Online (Sandbox Code Playgroud)
所以切换到linux contaners。看到第一张图。
一旦 docker for linux 运行,再次运行该命令。
docker pull nginx:latest
Run Code Online (Sandbox Code Playgroud)
您可以看到图像正在下载。
现在这张图片下载到你的硬盘上了吗?在这种情况下,docker info 命令可能没有多大帮助。
所以重新开始。单击设置而不是“切换到 Windows 容器...”
现在看到路径。
在我的机器上是 C:\ProgramData\DockerDesktop\vm-data
注意日期修改列。请注意并观察在您拉取或删除基于 linux 的映像后。
这是为 linux env 保留的磁盘空间,因此您将无法进一步向下浏览以查看图像所在的位置。
但是如果必须的话,启动一个基于 Linux 的虚拟机,安装 docker 并探索路径 /var/lib/docker/
Gau*_*vKP 15
在最近使用 WSL 的 Docker Desktop 中,Windows 10 中的 docker 映像位置已更改 -
(last tested with Docker Desktop Community version 2.3.0.3)
首先使用 Run - 并输入\\wsl$
这将打开文件资源管理器,并显示文件夹,如下所示 -
docker-desktopdocker-desktop-data浏览目录以查看所需的文件。
注意\\wsl$:使用命令之前请确保 docker 桌面正在运行
Atu*_*tul 10
截至 2022 年 8 月 29 日:
这里:
%localappdata%\Docker\wsl
Run Code Online (Sandbox Code Playgroud)
和这里:
C:\ProgramData\DockerDesktop\vm-data
Run Code Online (Sandbox Code Playgroud)
在过去,它在这里:
C:\Users\Public\Documents\Hyper-V\Virtual hard disks
Run Code Online (Sandbox Code Playgroud)
所以是的。程序数据、应用程序数据、文档等,它们可以存储在磁盘上的任何位置。Docker 是完全无组织的产品。浪费开发人员大量的时间来解决一些小事情。
小智 6
您可以使用以下命令导出您的图像,并可以将其复制到 linux/另一台机器 docker export [OPTIONS] CONTAINER
例子:
docker export --output="latest.tar" red_panda
Run Code Online (Sandbox Code Playgroud)
当你的Windows集装箱激活之后,你的图像默认保存在C:\ProgramData\Docker\
要更改此设置,您可以编辑C:\ProgramData\Docker\config\daemon.json并"graph"使用新路径添加新键...(请注意,每个反斜杠都会被另一个反斜杠转义)
例:
{
"registry-mirrors": [],
"insecure-registries": [],
"debug": true,
"experimental": false,
"graph": "D:\\ProgramData\\Docker"
}
Run Code Online (Sandbox Code Playgroud)
之后,您需要重新启动Docker服务,然后可以使用docker info命令验证更改并查看Docker Root Dir条目。
将此图像发送到另一台机器:
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
Run Code Online (Sandbox Code Playgroud)
在另一台机器上:
docker load < /tmp/mynewimage.tar
docker images
Run Code Online (Sandbox Code Playgroud)
正如上面的评论中所解释的,在使用 linux 容器的 Windows 上工作时,容器驻留在位于 DockerDesktop/settings/advanced/DiskImageLocation 的 docker 磁盘映像中
看这里
我找不到基于 WSL 的 Docker 安装的位置。但是 docker 命令本身有一种简单的方法来获取图像!
docker image save myimagename -o myimagename.img
Run Code Online (Sandbox Code Playgroud)
这会直接为您创建一个图像文件。
| 归档时间: |
|
| 查看次数: |
38968 次 |
| 最近记录: |