如何在 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?

可以在 VMWARE ESXI 上安装 docker 桌面吗?

docker 入门4 - 群 翻译

如何安装Docker桌面版到Windows系统上