Ich verwende WSL unter Windows, während ich Docker verwende.
Ich nehme diese Lösung an
Also habe ich versucht, „mounted_folder“ mit der Datei „file_at_host“ hier per Docker auf WSL zu mounten. Wie …
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
Aber wie Sie im nächsten Bild sehen können, zeigt der Befehl ls keine Dateien an.
Andererseits habe ich versucht, dasselbe in der Eingabeaufforderung zu tun.
docker run -it -v C:\Users\<username>\Desktop\mounted_folder:/new_dir <image> bash
Dann konnte ich die Datei „file_at_host“ mit dem Befehl ls finden.
Wie konnte das passieren?
Und auf welchen Ordner bezieht sich Docker, wenn es einen Ordner mountet?
Kann ich diesen Ordner auf der Windows-Benutzeroberfläche finden?
Ebenso habe ich versucht, mit WSL einen Ordner per Docker zu mounten und habe im Container die Datei „something.ipynb“ erstellt.
docker run -p 8888:8888 -v /c/Users/<username>/Desktop/ds_python:/work --name my-lab <image>
Und ich konnte die Datei „something.ipynb“ nicht auf der Windows-Benutzeroberfläche finden, wo sie sich im entsprechenden Ordner „ds_python“ befinden sollte.
Aber ich habe festgestellt, dass die Datei „something.ipynb“ vorhanden ist, als ich versucht habe, „Desktop“ per Docker mit WSL zu mounten.
Wie im Bild oben wird die Datei „something.ipynb“ angezeigt, obwohl ich sie in der Windows-Benutzeroberfläche „C:\Benutzer\Desktop\ds_python“ nicht finden konnte.
Wie kann ich hier einen Durchbruch erzielen?
„C:\Users\Desktop“ und „/c/Users//Desktop/“ sind unterschiedlich?
Wie kann ich Letzteres dann unter Windows sehen?
Und außerdem: wie kann ich den entsprechenden Ordner unter Windows mit WSL per Docker mounten?
Antwort1
Wenn Sie WSL2 verwenden, werden die Windows-Laufwerke auf dem /mnt-Endpunkt angezeigt.
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
Um Ihre Windows-Dateien zu mounten, verwenden Sie das gleiche Format wie oben beschrieben, d. h. geben Sie den vollständigen Pfad an, einschließlich des führenden /mnt
als Bind-Mount,
docker run -it -v /mnt/c:/host/c alpine sh
Damit wird Ihr Laufwerk C im Container unter /host/c gemountet.
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
Antwort2
Erstens handelt es sich bei der Lösung von Stack Overflow, die ich beim Angeben des bereitgestellten Ordners übernommen habe, um alte Informationen und sie bezieht sich auf Docker Toolbox, nicht auf WSL.
Ich fand also heraus, dass es auf meine Situation nicht zutraf.
Zweitens sollte ich den gemounteten Ordner auf WSL wie folgt angeben ...
docker run -it -v /mnt/c/Users/'username'/desktop/mounted_folder:/new_dir <image> bash
Drittens, wenn ich den gemounteten Ordner wie folgt angebe:
/c/Users/'username'/desktop/mounted_folder
Ich kann den Ordner auf der GUI anhand des Pfads überprüfen, etwa:
\\wsl$\Ubuntu\c\Users\'username'\desktop\mounted_folder
Ich sollte eingeben \\wsl$\Ubuntu~
, da die Distribution von WSL Ubuntu war. Ubuntu-20.04 ist jedoch installiert.
Ergebnis vonwsl --list -v
Wenn ich den gemounteten Ordner wie folgt angebe:
/mnt/c/Users/'username'/desktop/mounted_folder
Ich kann den Ordner auf der GUI anhand des Pfads überprüfen, etwa:
C:\Users\'username'\Desktop\mounted_folder
Wenn Sie im ersten Fall den gemounteten Ordner in der Befehlszeile unter Windows überprüfen möchten, sollten Sie PowerShell verwenden. Nicht die Eingabeaufforderung.