我在 Windows 上使用 WSL,同时使用 Docker。
我采用这个解决方案
因此,我尝试通过 WSL 上的 Docker 将“mounted_folder”与“file_at_host”文件挂载在此处。就像...
docker run -it -v //C/Users/<username>/Desktop/mounted_folder://new_dir <image> bash
docker run -it -v /C/Users/<username>/Desktop/mounted_folder:/new_dir <image> bash
但是正如您在下图中看到的,ls 命令没有显示任何文件。
另一方面,我尝试在命令提示符上做同样的事情。
docker run -it -v C:\Users\<username>\Desktop\mounted_folder:/new_dir <image> bash
然后我可以使用 ls 命令找到“file_at_host”文件。
怎么会这样呢?
并且,docker 在挂载文件夹时指的是哪个文件夹?
我可以在 Windows GUI 上找到该文件夹吗?
类似地,我尝试使用 WSL 通过 docker 挂载一个文件夹,并在容器中创建“something.ipynb”文件。
docker run -p 8888:8888 -v /c/Users/<username>/Desktop/ds_python:/work --name my-lab <image>
而且我在 Windows GUI 上找不到“something.ipynb”文件,它应该位于适用的文件夹“ds_python”中。
但是,当我尝试使用 WSL 通过 Docker 挂载“桌面”时,我发现“something.ipynb”文件存在。
如上图所示,出现了“something.ipynb”文件,但我在 Windows GUI“C:\Users\Desktop\ds_python”上找不到它。
我怎样才能突破这一困境?
“C:\Users\Desktop” 和 “/c/Users//Desktop/” 不同吗?
那么我如何在Windows上看到后者?
此外,如何通过 Docker 在 Windows 上使用 WSL 挂载适用的文件夹?
答案1
如果你使用的是 WSL2,则 Windows 驱动器将暴露在 /mnt 端点上
ls -lah /mnt
total 12K
drwxr-xr-x 10 root root 4.0K Nov 13 13:13 .
drwxr-xr-x 17 root root 4.0K Dec 12 11:12 ..
drwxrwxrwx 1 sathya sathya 512 Dec 6 12:47 c
drwxrwxrwx 1 sathya sathya 4.0K Dec 2 10:31 d
drwxrwxrwx 1 sathya sathya 4.0K Dec 2 10:31 e
drwxrwxrwx 1 sathya sathya 4.0K Dec 2 10:31 f
drwxrwxrwx 1 sathya sathya 512 Dec 2 10:31 g
drwxrwxrwx 1 sathya sathya 4.0K Dec 2 10:31 h
drwxrwxrwx 2 root root 4.0K Nov 13 13:13 i
drwxrwxrwt 2 root root 40 Dec 12 11:12 wsl
要挂载 Windows 文件,您可以使用与上面提到的相同的格式,即提供完整路径,包括/mnt
作为绑定挂载的前导,
docker run -it -v /mnt/c:/host/c alpine sh
这样,您的 C 盘就被挂载到容器中的 /host/c 了。
ls -lah /host/c
drwxrwxrwx 1 1000 1001 512 Dec 15 07:42 .
drwxr-xr-x 3 root root 4.0K Dec 15 10:35 ..
lrwxrwxrwx 1 1000 1001 12 Sep 29 2018 Documents and Settings -> /mnt/c/Users
dr-xr-xr-x 1 1000 1001 512 Dec 9 16:54 Program Files
dr-xr-xr-x 1 1000 1001 512 Nov 13 11:03 Program Files (x86)
drwxrwxrwx 1 1000 1001 512 Nov 7 13:26 ProgramData
dr-xr-xr-x 1 1000 1001 512 Oct 2 08:39 Users
dr-xr-xr-x 1 1000 1001 512 Dec 15 07:43 Windows
答案2
首先,我在指定挂载文件夹时采用的 Stack Overflow 解决方案是旧信息,并且是关于 Docker Toolbox 的,而不是针对 WSL 的。
所以,我发现它不适用于我的情况。
其次,我应该指定 WSL 上的挂载文件夹,例如......
docker run -it -v /mnt/c/Users/'username'/desktop/mounted_folder:/new_dir <image> bash
第三,如果我指定挂载文件夹,例如,
/c/Users/'username'/desktop/mounted_folder
我可以通过以下路径检查 GUI 上的文件夹,
\\wsl$\Ubuntu\c\Users\'username'\desktop\mounted_folder
我应该输入\\wsl$\Ubuntu~
,因为 WSL 的发行版是 Ubuntu。不过已经安装了 Ubuntu-20.04。
的结果wsl --list -v
如果我指定安装的文件夹,例如,
/mnt/c/Users/'username'/desktop/mounted_folder
我可以通过以下路径检查 GUI 上的文件夹,
C:\Users\'username'\Desktop\mounted_folder
在前一种情况下,如果您想在 Windows 命令行上检查已安装的文件夹,则应使用 PowerShell。而不是命令提示符。