Я использую WSL на Windows и Docker.
Я принимаю это решение
Итак, я попытался смонтировать "mounted_folder" с файлом "file_at_host" здесь с помощью Docker на WSL. Как...
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
Затем я смог найти файл «file_at_host» с помощью команды ls.
Как такое могло произойти?
И на какую папку ссылается Docker, когда монтирует папку?
Могу ли я найти эту папку в графическом интерфейсе Windows?
Аналогично я попытался смонтировать папку через Docker с WSL и создал файл «something.ipynb» в контейнере.
docker run -p 8888:8888 -v /c/Users/<username>/Desktop/ds_python:/work --name my-lab <image>
И я не смог найти файл «something.ipynb» в графическом интерфейсе Windows, где он должен быть в соответствующей папке «ds_python».
Но я обнаружил, что файл «something.ipynb» существует, когда я попытался смонтировать «Desktop» с помощью Docker с помощью WSL.
Как и на картинке выше, появляется файл «something.ipynb», хотя я не смог найти его в графическом интерфейсе Windows «C:\Users\Desktop\ds_python».
Как я могу добиться прорыва в этом вопросе?
«C:\Users\Desktop» и «/c/Users//Desktop/» — это разные имена?
Тогда как я могу увидеть последнее в Windows?
И еще, как можно смонтировать соответствующую папку в Windows с помощью WSL by Docker?
решение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
Я могу проверить папку в графическом интерфейсе по пути, например,
\\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
Я могу проверить папку в графическом интерфейсе по пути, например,
C:\Users\'username'\Desktop\mounted_folder
Если в первом случае вы хотите проверить смонтированную папку в командной строке Windows, вам следует использовать PowerShell, а не командную строку.