从Windows文件资源管理器访问Docker容器文件

时间:2015-11-21 21:46:18

标签: windows docker

如何从Windows文件资源管理器访问Docker容器文件夹和文件?

3 个答案:

答案 0 :(得分:10)

如果您在Windows上运行Docker桌面,则Docker容器不是在本地文件系统上本地运行,而是在hyper-v虚拟机上或通过WSL2运行。

Hyper-v(旧版)

理论上,如果要停止hyper-v vm,则可以打开vhdx,并且如果具有正确的文件系统驱动程序,请挂载它并查看其中的文件。虚拟机运行时无法执行此操作。默认情况下,以Linux容器模式运行的OS名为“ Docker Desktop”,但运行busybox。

文件可以在这里找到:

C:\ProgramData\DockerDesktop\vm-data\DockerDesktop.vhdx

WSL2(现代)

WSL有所不同,但差别不大。您仍在有效地使用虚拟环境。

但是,WSL的一个不错的优点是,您实际上可以使用Windows资源管理器天真地浏览此文件系统。

通过浏览到\\ wsl $,您将能够看到您拥有的所有发行版的文件系统,包括docker-desktop。

我机器上的docker文件系统似乎位于:

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

但是,叠加的“合并”视图显示了您所做的更改的原始文件系统,但似乎无法通过Windows资源管理器工作,并为您提供了一个空白窗口。但是,您仍然可以看到“ diff”文件夹,其中包含您的更改。

您可以使用powershell中的wsl命令为这些实例中的任何一个打开终端。

通过Docker访问

如果您想看一下此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\