Mat*_*ias 21 docker windows-subsystem-for-linux docker-desktop
我在 Windows 10 下使用 Ubuntu 作为客户端操作系统运行Windows 子系统 Linux (WSL)。现在我在 Windows 主机上安装了Docker Desktop,并在 Docker 设置中启用了 WSL 集成。到目前为止一切正常,我可以从我的 WSL Ubuntu 客户端访问在 Windows 主机上运行的 Docker 守护进程。
现在我想知道所有 Docker 卷和其他数据在此设置中存储在哪里。通常这些在 下/var/lib/docker,但在使用 WSL 时似乎并非如此。运行时,df -h我可以看到以下与 Docker 相关的行:
/dev/sdd 251G 3.1G 236G 2% /mnt/wsl/docker-desktop-data/isocache
/dev/sdc 251G 120M 239G 1% /mnt/wsl/docker-desktop/shared-sockets
/dev/loop0 244M 244M 0 100% /mnt/wsl/docker-desktop/cli-tools
Run Code Online (Sandbox Code Playgroud)
所以它们似乎在 Windows 主机上的某个地方。
... 但是哪里?
小智 63
当我在 docker 中创建一个名为 shared_data 的卷时,我可以在下面找到它
\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\shared_data\_data
Roh*_*haq 26
您可以在隐藏的网络共享下找到 WSL2 卷。打开 Windows 资源管理器,然后\\wsl$在位置栏中键入。按 Enter,它应该会显示您的 WSL 卷,包括适用于 Windows 的 Docker 卷。
Dev*_*vWL 24
我在 Windows 10 + WSL2 上运行 docker-desktop。只需确保运行 Docker 桌面,以便可以从网络访问该路径。
我在下面找到了我的体积数据
\\wsl$\docker-desktop-data\data\docker\volumes
Run Code Online (Sandbox Code Playgroud)
请注意,您需要先运行 docker 桌面,然后才能发现这些网络目录:
小智 18
如果您想知道 docker 卷位于 Windows 主机上的哪个位置,对我来说它们似乎位于:
C:\Users\username\AppData\Local\Docker\wsl\data\ext4.vhdx
Run Code Online (Sandbox Code Playgroud)
和
C:\Users\username\AppData\Local\Docker\wsl\distro\ext4.vhdx
Run Code Online (Sandbox Code Playgroud)
据推测,这些分别是docker-desktop-data和docker-desktop。
理论上,根据这篇文章,这些 WSL2 实例可以重新定位到备用驱动器以释放磁盘空间;这是从新位置导出、取消注册和重新导入实例的标准方法。此处也描述了此过程(关于标准 WSL 实例)。
(警告 - 我自己还没有对 docker WSL2 实例执行此操作,仅适用于使用第二个链接中的方法的 Ubuntu。)
Aym*_*Dev 13
关于此主题的大多数答案都是关于 Windows 端的位置,我需要从我的 WSL 发行版访问容器日志文件(问题与卷相同),Windows 路径\\wsl$不是一个选项。
这些文件可以在 Windows 上找到\\wsl$\docker-desktop-data\version-pack-data\community\docker\containers。
从 WSL 发行版中,我可以访问,/mnt/wsl/docker-desktop-data/version-pack-data但它是空的。
终于在这里找到了解决方案:
docker-desktop-data:net use w: \\wsl$\docker-desktop-data
Run Code Online (Sandbox Code Playgroud)
docker:net use w: \\wsl$\docker-desktop-data
Run Code Online (Sandbox Code Playgroud)
现在你可以获得你想要的一切,在我的例子中是日志文件:
sudo mkdir /mnt/docker
sudo mount -t drvfs w: /mnt/docker
Run Code Online (Sandbox Code Playgroud)
Docker Desktop的WSL2功能创建了两个新的wsl2容器docker-desktop和docker-desktop-data,可以通过命令看到wsl -l -v
NAME STATE VERSION
* Ubuntu-18.04 Running 2
docker-desktop Running 2
docker-desktop-data Running 2
Run Code Online (Sandbox Code Playgroud)
这是 docker 守护进程实际运行的地方,也是您可以找到所需数据的地方。
wsl2 内核中的卷映射如下:
docker run -ti -v host_dir:/app amazing-container将被映射到/mnt/wsl/docker-desktop-data/data/docker/volumes/host_dir/_data/
以上是正确的路径,尽管docker volume inspect amazing-container会以不同的方式告诉您(/var/lib/docker/volumes/)。
总而言之,卷映射到:/mnt/wsl/docker-desktop-data/data/docker/volumes/
| 归档时间: |
|
| 查看次数: |
20421 次 |
| 最近记录: |