如何在 Windows 10 docker 桌面中访问 /var/lib/docker?
Posted
技术标签:
【中文标题】如何在 Windows 10 docker 桌面中访问 /var/lib/docker?【英文标题】:How to access /var/lib/docker in windows 10 docker desktop? 【发布时间】:2020-06-10 00:15:35 【问题描述】:-
为 windows 10 安装了 docker 桌面
使用 powershell 运行 docker 容器 (ubuntu)
现在,我想浏览到 /var/lib/docker --> 想浏览到 overlay2 以检查层.. /diff 文件夹等。
如果我访问 /var/lib/docker 文件夹 - powershell 抱怨此文件夹不存在。
其他信息:我已经检查了为 docker 桌面映射的磁盘映像位置。它是一个 vhdx 文件。 我无法使用 Oracle 虚拟框打开它 - 它说它不是受支持的版本文件。 我尝试在 Hyper V 管理器中打开,VM 被列出:DockerDesktopVM。
但我的目标是进行 SSH 并浏览 /var/lib/docker 文件夹..【问题讨论】:
我也有同样的问题,但没有找到直接的答案。您是否碰巧找到了这些卷所在的位置? 不,我还没找到 我无法找到从 wsl2 内部浏览 docker 卷的方法,但从外部(Windows 资源管理器)您可以检查此路径:\\wsl$\docker-desktop-data\version -pack-data\community\docker\volumes 【参考方案1】:如This page of docker forums 所述,您可以使用 shell 运行普通 debian docker 映像并将其命名空间更改为 docker host。
你需要运行的终端命令是:
>> docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -i sh
据我了解,在将 debian 映像作为终端运行后(-it 选项),您需要使用指定参数调用命令 nsenter 将命名空间更改为主机。在此之后,您的容器将成为 Docker 主机,您可以查看它的所有文件。
在此命令之后,您只需调用以下命令即可访问 docker 映像:
>> cd ls /var/lib/docker/
【讨论】:
【参考方案2】:(这是针对 WSL2 的情况。类似的问题是 my answer)
Docker 镜像由 docker 自己的虚拟机管理。 “docker info”给出的路径 /var/lib/docker 是相对于 docker 的主机文件系统,而不是你的容器的文件系统。它们的挂载点不同。可以通过以下两种方式查看docker的宿主文件系统:
您可以将主机文件系统挂载到容器目录。比如,
docker run -v /:/data -it ubuntu /bin/bash
此命令在 Ubuntu docker 映像中运行一个 shell,将 docker 的文件系统挂载到 /data 目录。在那里,您可以在 /data 下找到完整的文件系统,包括 ./var/lib/docker。如果需要,您可以在 shell 提示符下“chroot /data”以获得更好的视图。
当您在 WSL2 中的发行版中启用 docker 时,您始终可以在您的发行版 /mnt 目录中检查您的容器。 Docker 已经为你挂载了一切。
/mnt/wsl/docker-desktop-data/data/docker
如果你有足够的经验,你可能会在你的 Windows 目录中找到所有数据的虚拟磁盘的实际位置。
C:\Users\your_name\AppData\Local\Docker\wsl\data\
或者可能只是为了好玩:
\\wsl$\Ubuntu\mnt\wsl\docker-desktop-data\data\docker
很遗憾,我没有尝试深入了解它们。
【讨论】:
在您的方法 2 中,/mnt/wsl/docker-desktop-data/data/docker 这个文件夹不存在。但是我在这里找到了它: /mnt/host/wsl/docker-desktop-data/data/ ,但是文件夹是空的。 @user139301 是的,“docker desktop”不再显示与早期版本相同的数据。显然,较新的版本(至少我正在使用的当前 v3.8.1)似乎比以前给您更少的控制权。 对我来说(使用 WSL2),步骤 1-2 运行良好,但步骤 3 中建议的位置都没有 - 在这两种情况下,data
文件夹都存在但没有数据它。
您能否详细说明“Docker 镜像由 docker 自己的 VM 管理。”以上是关于如何在 Windows 10 docker 桌面中访问 /var/lib/docker?的主要内容,如果未能解决你的问题,请参考以下文章
如何在容器上编辑 Docker 端口和参数? (使用适用于 Windows 的 Docker 桌面)[重复]
Docker Windows桌面版安装 Windows家庭版伪装成专业版系统
如何在命令行中使用Docker for Windows,并绕过/禁用GUI?