Docker на WSL. Хотите смонтировать соответствующую папку на Windows10 с WSL

Docker на WSL. Хотите смонтировать соответствующую папку на Windows10 с WSL

Я использую WSL на Windows и Docker.

Я принимаю это решение

https://stackoverflow.com/questions/50540721/docker-toolbox-error-response-from-daemon-invalid-mode-root-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

снимок экрана результата wsl --list -v

Если я укажу смонтированную папку, например,

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

Я могу проверить папку в графическом интерфейсе по пути, например,

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

Если в первом случае вы хотите проверить смонтированную папку в командной строке Windows, вам следует использовать PowerShell, а не командную строку.

Ошибка командной строки

Связанный контент