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