当前位置: 首页 > 知识库问答 >
问题:

从Windows访问Docker容器文件

慕容康安
2023-03-14

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

共有3个答案

阎宾实
2023-03-14

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

-v/host/directory:/container/directory

一个例子:

docker运行-it-v C:\用户\thomas\Desktop:/root/home--namemy_container图像1

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

翟凯
2023-03-14

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

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

史旺
2023-03-14

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

从理论上讲,如果要停止hyper-v虚拟机,可以打开vhdx,如果有正确的文件系统驱动程序,安装它并查看其中的文件。这在虚拟机运行时是不可能做到的。默认情况下,运行Linux容器模式的操作系统名为“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 OS和文件系统,一种方法是启动一个容器,它可以在根目录下访问OS,比如:

docker run -it --mount type=bind,source=/,target=/host ubuntu /bin/bash

这应该会让你进入一个Ubuntu docker容器,它有一个Bash终端,它有hyper-v容器(/)的根,安装在路径“/host”上。在里面,你会发现运行docker的虚拟机的Busybox文件系统和所有容器。

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

/host/var/lib/docker/overlay2

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

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

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

 类似资料:
  • 问题内容: 我需要在Windows 2016 Server上使用Docker / Windows容器并为其准备Windows应用程序才能在其上运行。通过Powershell配置Windows并不像在Ubuntu上那样方便,尤其是如果您从未真正使用过Windows Server并且需要学习所有Powershell命令时,尤其如此;) 是否可以通过GUI访问Windows容器? 可以在Docker,U

  • 问题内容: 我是Docker的新手。 我运行了一个10节点的图像,并在运行的容器中克隆了一个存储库,运行了使用文件监视程序启动服务器的应用程序。我需要访问容器内的代码库,并在Windows主机上运行的IDE中打开它。如果完成了,那么我还希望当我在IDE中更改文件时,这些更改会在容器中引起文件监视程序。 任何帮助表示赞赏。谢谢, 问题答案: 您正在寻找的概念称为卷。您需要启动一个容器并在其中安装主机

  • 问题内容: 我基于两个不同的图像创建了两个docker容器。一个数据库,另一个用于网络服务器。这两个容器都在我的Mac OS X上运行。 我可以从主机访问数据库容器,也可以从主机访问Web服务器。 但是,如何从Web服务器访问数据库连接? 我启动数据库容器的方式是 我开始了wls容器作为 我可以通过连接到主机上的数据库 我可以以以下方式访问主机上的wls: 问题答案: 最简单的方法是使用–link

  • 我基于两个不同的映像创建了两个docker容器。一个是db,另一个是WebServer。这两个容器都在我的mac OSX上运行。 我可以从主机访问db容器,也可以从主机访问webserver。 我可以访问主机上的wls作为

  • 我试图使用boto3访问aws凭据。会话通过传递配置文件名称。此脚本在docker容器内运行。 这不是默认的IAM角色。这是一个新创建的角色,我发现ProfileNotFound错误。

  • 问题内容: 我正在尝试为将我的应用程序容器连接到postgres容器提供一个便携式解决方案。“便携式”是指我可以给用户两个命令,每个容器一个,它们将始终协同工作。 我的本地PC上运行着一个postgres docker容器,我这样运行它, 我可以使用address从python flask应用程序访问它。 我也将python应用程序也放置在docker容器中,但无法连接到postgres容器。 地