如何从Windows文件资源管理器访问Docker容器文件夹和文件?
答案 0 :(得分:10)
如果您在Windows上运行Docker桌面,则Docker容器不是在本地文件系统上本地运行,而是在hyper-v虚拟机上或通过WSL2运行。
理论上,如果要停止hyper-v vm,则可以打开vhdx,并且如果具有正确的文件系统驱动程序,请挂载它并查看其中的文件。虚拟机运行时无法执行此操作。默认情况下,以Linux容器模式运行的OS名为“ Docker Desktop”,但运行busybox。
文件可以在这里找到:
C:\ProgramData\DockerDesktop\vm-data\DockerDesktop.vhdx
WSL有所不同,但差别不大。您仍在有效地使用虚拟环境。
但是,WSL的一个不错的优点是,您实际上可以使用Windows资源管理器天真地浏览此文件系统。
通过浏览到\\ wsl $,您将能够看到您拥有的所有发行版的文件系统,包括docker-desktop。
我机器上的docker文件系统似乎位于:
\\wsl$\docker-desktop-data\version-pack-data\community\docker\overlay2
但是,叠加的“合并”视图显示了您所做的更改的原始文件系统,但似乎无法通过Windows资源管理器工作,并为您提供了一个空白窗口。但是,您仍然可以看到“ diff”文件夹,其中包含您的更改。
您可以使用powershell中的wsl命令为这些实例中的任何一个打开终端。
如果您想看一下此Docker操作系统和文件系统,一种方法是启动一个容器,该容器可以从根目录访问操作系统,例如:
docker run -it --mount type=bind,source=/,target=/host ubuntu /bin/bash
这应该使您进入带有Bash终端的Ubuntu docker容器,该终端具有hyper-v容器(/)的根目录,并安装在路径“ / host”上。在内部,您将找到运行docker的虚拟机的Busybox文件系统以及所有容器。
由于docker的运行方式,您将能够访问每个容器的文件系统。如果您对容器使用overlay2文件系统,则可能会在这里找到每个容器的文件系统层:
/host/var/lib/docker/overlay2
如果要在Windows资源管理器中浏览的文件,则应该能够配置此文件夹的samba导出,该导出可从主机访问,而在运行该容器时可以访问。
但是,如果目标是能够在本地OS上浏览/编辑文件并在容器内进行更新,通常最简单的方法是将本地目录安装到容器中。可以像上面的示例一样完成此操作,但是首先需要进入Docker Desktop设置,并启用将共享驱动器安装到主机虚拟机中,然后在启动容器时提供volume参数。 / p>
如果您使用的是WSL2,则还有更多可用选项,因为您可以将项目保留在WSL层中,同时可以通过主机OS或通过docker与项目进行交互。最佳做法仍在不断变化,因此我将避免在此处给出直接建议。
答案 1 :(得分:2)
您应该使用装载卷。在docker run ....
命令中,您可以指定安装卷。语法如下:
-v / host /目录:/ container / directory
一个例子:
docker run -it -v C:\ Users \ thomas \ Desktop:/ root / home --name my_container image1
这将允许容器将文件写入/ root / home并将它们显示在用户胸卡的桌面上
答案 2 :(得分:0)
另一个相关问题的回复回答了这个:https://stackoverflow.com/a/64418064/1115220
<块引用>\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\