我在 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 上找到該資料夾嗎?
同樣,我嘗試透過 docker 使用 WSL 掛載一個資料夾,並在容器中建立「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 的 WSL 在 Windows 上掛載適用的資料夾?
答案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。不是命令提示字元。