我在 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 运行 /home
时,有人可以向我解释这个 docker
目录在哪里(物理上/在 wsl 中/我的电脑)?是否可以运行 docker
并且它运行 wsl docker
而无需符号链接/路径修改,以便我可以在容器内安装我的 linux 目录?
答案 0 :(得分:0)
如果安装了 wsl-2
,您可以通过以下路径访问其文件系统:-
\\wsl$
/home
不会因为它物理上不存在于 Windows 的文件系统中而起作用
但是,如果您登录到 wsl 发行版,则可以使用 /home
或任何其他基于 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
的目录从 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\