Docker en WSL. Quiere montar una carpeta aplicable en Windows10 con WSL

Docker en WSL. Quiere montar una carpeta aplicable en Windows10 con WSL

Estoy usando WSL en Windows mientras uso Docker.

Estoy adoptando esta solución

https://stackoverflow.com/questions/50540721/docker-toolbox-error-response-from-daemon-invalid-mode-root-docker

Así que intenté montar "mounted_folder" con el archivo "file_at_host" aquí mediante Docker en WSL. Como...

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

Pero como puede ver en la siguiente imagen, el comando ls no muestra archivos.

Cómo se monta una carpeta en CONTENEDOR

Por otro lado, intenté hacer lo mismo en el símbolo del sistema.

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

Entonces pude encontrar el archivo "file_at_host" con el comando ls.

Cómo se monta una carpeta en CONTENEDOR

¿Cómo pudo pasar esto?

Y, ¿a qué carpeta se refiere Docker cuando monta la carpeta?

¿Puedo encontrar esa carpeta en la GUI de Windows?

De manera similar, intenté montar una carpeta mediante la ventana acoplable con WSL e hice el archivo "algo.ipynb" en el contenedor.

docker run -p 8888:8888 -v /c/Users/<username>/Desktop/ds_python:/work --name my-lab <image>

Y no pude encontrar el archivo "something.ipynb" en la GUI de Windows donde debería estar en la carpeta correspondiente "ds_python".

Pero descubrí que el archivo "something.ipynb" existe cuando intenté montar "Desktop" mediante Docker con WSL.

Cómo se monta una carpeta en CONTENEDOR

Como en la imagen de arriba, aparece el archivo "something.ipynb", mientras que no pude encontrarlo en la GUI de Windows "C:\Users\Desktop\ds_python".

¿Cómo puedo lograr un gran avance en esto?

¿"C:\Users\Desktop" y "/c/Users//Desktop/" son diferentes?

Entonces, ¿cómo puedo ver este último en Windows?

Y además, ¿cómo puedo montar la carpeta correspondiente en Windows con WSL de Docker?

Respuesta1

Si está utilizando WSL2, las unidades de Windows están expuestas en el punto final /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


para montar sus archivos de Windows, usaría el mismo formato mencionado anteriormente, es decir, proporcionar la ruta completa, incluido el inicio /mntcomo montaje de enlace,

docker run -it -v /mnt/c:/host/c alpine sh

Con esto, su unidad C se monta en /host/c en el contenedor.

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

Respuesta2

Primero, la solución de Stack Overflow que adopté cuando especifiqué la carpeta montada es información antigua y se trata de Docker Toolbox, no de WSL.

Entonces descubrí que no era aplicable a mi situación.

En segundo lugar, debo especificar la carpeta montada en WSL como...

docker run -it -v /mnt/c/Users/'username'/desktop/mounted_folder:/new_dir <image> bash

En tercer lugar, si especifico la carpeta montada como,

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

Puedo verificar la carpeta en la GUI por una ruta como,

\\wsl$\Ubuntu\c\Users\'username'\desktop\mounted_folder

imagen de resultado del explorador

Debería escribir \\wsl$\Ubuntu~, porque la distribución de WSL era Ubuntu. Sin embargo, Ubuntu-20.04 está instalado.

Consecuencia dewsl --list -v

captura de pantalla del resultado de wsl --list -v

Si especifico la carpeta montada como,

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

Puedo verificar la carpeta en la GUI por una ruta como,

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

Si desea verificar la carpeta montada en la línea de comando en Windows en el primer caso, debe usar PowerShell. No símbolo del sistema.

Error de símbolo del sistema

información relacionada