首页 > 解决方案 > Windows WSL2 docker.exe 卷挂载与 wsl docker 卷挂载不同

问题描述

我在支持 WSL2 的 Windows 上安装了 Docker Desktop。一切都按预期工作。当我使用卷挂载运行容器时,docker run -it --rm -v W:\projects:/projects busybox我可以访问此文件夹中的所有 Windows 文件。

遗憾的是,docker 内的 windows 共享的性能不是很好,所以我尝试从我的 wsl 机器上挂载一条路径。

我的印象是docker会在wsl中运行?所以我希望这两个命令输出相同:

docker run -it --rm -v /home/:/myHome busybox ls -l /myHome
wsl docker run -it --rm -v /home/:/myHome busybox ls -l /myHome

但是使用的输出docker只是我的主目录total 0的输出。wsl

当我从 Windows运行时,有人可以向我解释这个/home目录在哪里(物理上/在 wsl/我的计算机中)吗?docker是否可以运行docker并且它在wsl docker没有符号链接/路径修改的情况下运行,所以我可以将我的 linux 目录安装在容器内?

标签: dockerwsl-2

解决方案


如果wsl-2已安装,您可以通过以下路径访问其文件系统:-

\\wsl$

/home不仅可以工作,因为它实际上不存在于 Windows 的文件系统中

/home但是,如果您登录到 wsl 发行版,则可以使用或任何其他基于 linux 的目录。请注意,如果您从 Windows 运行以下命令,它不会挂载任何卷。它应该只从您的 wsl 发行版运行

docker run --name mycontainer -v /home:myhome busybox

要从Windows访问发行版/home中的目录:-Ubuntu-16.04

\\wsl$\Ubuntu-16.04\home

你可以Ubuntu-16.04用你的替换distro name - version

要挂载 wsl 下的任何目录,请确保您已打开选项“启用与我的默认 wsl 发行版的集成” https://docs.docker.com/docker-for-windows/wsl/

要将wsl's 目录从 windows 挂载为卷,请以给定格式提供主机卷路径

docker run --name mycontainer -v \\wsl$\Ubuntu-16.04\home:/myHome busybox

基本上,docker run -v会影响其执行的环境,即 windows 或 wsl

如果您已为 docker 启用 wsl-2 但不想使用发行版的文件系统,则 docker 卷存在于以下路径中

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

推荐阅读