docker - 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 目录安装在容器内?
解决方案
如果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\
推荐阅读
- javascript - 尝试在调试模式下构建 apk 但失败 - REACT-NATIVE
- javascript - 如何使用 onchange 事件更新输入值并在 vanilla Javascript 中获取值?
- javascript - 使用javascript在函数中传递多个参数的更简单方法
- node.js - Passportjs 本地身份验证总是失败
- pandas - 将标头处理为数据框中的数据
- tensorflow - 是否可以投射张量
在 Java 中到 double 和其他原生 Java 变量类型? - r - PowerShell:在大文件中替换 NUL 不起作用
- r - 将 UpdateTabsetPanel 与动态 UI 一起使用
- typescript - 如何将对象键的值映射到 TypeScript 中的同一对象?
- android - Resources$NotFoundException: Unable to find resource ID #0xffffffff using NestedScrollView with Motionlayout