首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Windows访问Docker容器文件

从Windows访问Docker容器文件
EN

Stack Overflow用户
提问于 2015-11-22 05:46:18
回答 3查看 30K关注 0票数 30

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

EN

回答 3

Stack Overflow用户

发布于 2020-04-23 05:34:45

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

Hyper-v (传统)

理论上,如果要停止hyper-v虚拟机,可以打开vhdx,如果有正确的文件系统驱动程序,则可以挂载它并查看其中的文件。当虚拟机正在运行时,这是不可能的。默认情况下,运行Linux容器模式的操作系统名为"Docker Desktop",但运行busybox。

该文件可以在以下位置找到:

代码语言:javascript
运行
复制
C:\ProgramData\DockerDesktop\vm-data\DockerDesktop.vhdx

WSL2 (现代)

WSL的事情略有不同,但不是很多。您仍然可以有效地使用虚拟环境。

然而,WSL的一个很好的优点是,您实际上可以使用Windows资源管理器简单地浏览这个文件系统。

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

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

代码语言:javascript
运行
复制
\\wsl$\docker-desktop-data\version-pack-data\community\docker\overlay2

然而,覆盖显示原始文件系统的合并视图似乎不能通过windows资源管理器工作,它会给你一个空白窗口。但是,您仍然可以看到“diff”文件夹,其中包含您的更改。

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

通过Docker访问

如果你想看一下这个Docker操作系统和文件系统,一种方法是启动一个容器,它可以访问根目录下的操作系统,如下所示:

代码语言:javascript
运行
复制
docker run -it --mount type=bind,source=/,target=/host ubuntu /bin/bash

这应该会将您放到一个Ubuntu docker容器中,其中包含一个Bash终端,其中包含安装在路径'/host‘上的hyper-v容器(/)的根目录。查看内部,您将发现运行docker的虚拟机的Busybox文件系统,以及所有容器。

由于docker的运行方式,您将能够访问每个容器的文件系统。如果您对容器使用overlay2文件系统,则很可能会在以下位置找到每个容器的文件系统层:

代码语言:javascript
运行
复制
/host/var/lib/docker/overlay2

如果您想要在windows资源管理器中浏览文件,您应该能够配置此文件夹的samba导出,该导出可从主机访问,并可在此容器运行时访问。

然而,如果目标是能够浏览/编辑本地操作系统上的文件,并让它们在容器内进行更新,通常最简单的方法是将本地目录挂载到容器中。这可以与上面的示例类似,但您首先需要进入Docker Desktop设置,并启用将共享驱动器挂载到主机虚拟机中,然后在旋转容器时提供卷参数。

如果您使用的是WSL2,那么您可以使用更多的选项,因为您可以将项目保留在WSL层中,同时从主机操作系统或通过docker与它们进行交互。这方面的最佳实践仍然在不断变化,所以我将避免在这里给出直接的建议。

票数 21
EN

Stack Overflow用户

发布于 2021-03-19 02:59:52

另一个相关问题的回答回答了这个问题:https://stackoverflow.com/a/64418064/1115220

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

票数 2
EN

Stack Overflow用户

发布于 2019-01-13 11:54:54

您应该使用装载卷。在docker run ....命令中,您可以指定装载卷。语法如下:

容器/主机/目录:/ -v /目录

举个例子:

docker run -it -v docker --name my_container image1

这将允许容器将文件写入/root/home,并使它们出现在用户thomas的桌面上

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33848947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档