WSL 上的 Docker。想要使用 WSL 在 Windows10 上掛載適用的資料夾

WSL 上的 Docker。想要使用 WSL 在 Windows10 上掛載適用的資料夾

我在 Windows 上使用 WSL,同時使用 Docker。

我正在採用這個解決方案

https://stackoverflow.com/questions/50540721/docker-toolbox-error-response-from-daemon-invalid-mode-root-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 指令沒有顯示任何檔案。

資料夾如何掛載到 CONTAINER 中

另一方面,我嘗試在命令提示字元下執行相同的操作。

docker run -it -v C:\Users\<username>\Desktop\mounted_folder:/new_dir <image> bash

然後我可以使用 ls 命令找到“file_at_host”檔案。

資料夾如何掛載到 CONTAINER 中

怎麼會發生這種事?

並且,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」檔案存在。

資料夾如何掛載到 CONTAINER 中

如上圖所示,出現了「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

wsl --list -v 結果的螢幕截圖

如果我指定安裝的資料夾,例如

/mnt/c/Users/'username'/desktop/mounted_folder

我可以透過以下路徑檢查 GUI 上的資料夾,

C:\Users\'username'\Desktop\mounted_folder

如果您想要在前一種情況下在 Windows 上的命令列上檢查已安裝的資料夾,您應該使用 PowerShell。不是命令提示字元。

命令提示字元錯誤

相關內容