我在Windows上安装了支持WSL2的Docker桌面。一切都按预期工作。当我使用卷挂载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 运行docker
时,有人可以向我解释这个/home
目录的位置(物理上/在 wsl 中/我的计算机中)吗?是否可以运行docker
并且它可以在没有符号链接/路径修改的情况下运行wsl docker
,以便我可以在容器内挂载我的 linux 目录?
如果安装了wsl-2
,您可以通过转到以下路径来访问其文件系统:-
\wsl$
/home
不仅可以工作,因为它不在Windows的文件系统中物理存在。
但是,如果您登录到 wsl 发行版,则可以使用/home
或任何其他基于 linux 的目录。请注意,如果从 Windows 运行以下命令,则不会挂载任何卷。它应该只从你的 wsl 发行版运行
docker run --name mycontainer -v /home:myhome busybox
要从 Windows 访问Ubuntu-16.04
发行版中的/home
目录:-
\wsl$Ubuntu-16.04home
您可以将Ubuntu-16.04
替换为distro name - version
要挂载 wsl 下的任何目录,请确保您已打开选项"启用与我的默认 wsl 发行版的集成" https://docs.docker.com/docker-for-windows/wsl/
要将 Windows 中的wsl
目录挂载为卷,请以给定格式提供主机卷路径
docker run --name mycontainer -v \wsl$Ubuntu-16.04home:/myHome busybox
基本上,docker run -v
会影响它正在执行的环境,即窗口或 wsl。
如果您为 docker 启用了 wsl-2,但不想使用发行版的文件系统,则 docker 卷存在于以下路径中
\wsl$docker-desktop-dataversion-pack-datacommunitydockervolumes