Estoy usando WSL en Windows mientras uso Docker.
Estoy adoptando esta solución
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.
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 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.
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 /mnt
como 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
Debería escribir \\wsl$\Ubuntu~
, porque la distribución de WSL era Ubuntu. Sin embargo, Ubuntu-20.04 está instalado.
Consecuencia dewsl --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.