Hier ist ein Beispiel mit einem Windows-Pfad:
docker run -P -it --name organizr --mount src="/c/Users/MyUserName/AppData/Roaming/DockerConfigs/Organizr",dst=/config,type=bind organizrtools/organizr-v2:latest
Als kleine Anmerkung, während all dieser Haare-ziehenden Arbeit, während ich damit kämpfen musste, Pfade herauszufinden und immer wieder neu einzugeben, entschied ich mich, ein kleines AutoHotkey
-Skript zu schreiben, um einen Windows-Pfad in einen formatierten "Docker Windows"-Pfad umzuwandeln. Auf diese Weise muss ich nur einen beliebigen Windows-Pfad, den ich als Mount-Punkt verwenden möchte, in die Zwischenablage kopieren, die "Apps-Taste" auf der Tastatur drücken, und es wird in einem Pfadformat formatiert, das Docker schätzt.
Zum Beispiel:
Kopieren Sie dies in die Zwischenablage:
C:\Users\My PC\AppData\Roaming\DockerConfigs\Organizr
Drücken Sie die Apps-Taste
, während der Cursor dort ist, wo Sie ihn auf der Befehlszeile haben möchten, und er wird dies dort einfügen:
"/c/Users/My PC/AppData/Roaming/DockerConfigs/Organizr"
Es spart mir viel Zeit. Hier ist es für alle, die es nützlich finden könnten.
; --------------------------------------------------------------------------------------------------------------
;
; Docker Utility: Ein Windows-formatierter Pfad in einen Docker Formatter Pfad umwandeln
; Nützlich z.B. beim Mounten von Windows-Volumes über die Befehlszeile.
;
; Von: J. Scott Elblein
; Version: 1.0
; Datum: 5.2.2019
;
; Verwendung: Schneiden oder Kopieren Sie den Windows-formatierten Pfad in die Zwischenablage, drücken Sie die Apps-Taste auf Ihrer Tastatur
; (normalerweise direkt neben der Windows-Taste), es wird in einen 'Docker-Pfad' formatiert und in das aktive Fenster eingegeben.
; Ein einfaches Beispiel wäre, den beabsichtigten Volumenpfad über den Explorer zu kopieren, den Cursor nach dem "-v" in Ihrem Docker-Befehl zu platzieren, die Apps-Taste zu drücken
; und dann wird der formatierte Pfad für Sie auf die Zeile gesetzt.
;
; TODO:: Ich plane möglicherweise weitere Funktionen je nach Bedarf hinzuzufügen. Einige Ideen sind:
;
; - Ein Tray-Menü hinzufügen, mit der Möglichkeit, einige Dinge zu tun, z.B. den nicht formatierten Pfad auf der Zwischenablage nur durch den formatierten zu ersetzen
; - 'Intelligenteres' Bearbeiten hinzufügen, damit es zuerst bestätigt, dass der Zwischenablage-Text überhaupt ein Pfad ist
; (müsste mit Windows + Mac + Linux umgehen können)
; - Befehlszeilenbearbeitung hinzufügen, damit das Skript nicht immer im Tray sein muss, es könnte
; einfach den Windows-Pfad an das Skript übergeben, es formatieren, dann einfügen und schließen.
; Außerdem könnte es einfach beim Start des Skripts nach einem Pfad in der Zwischenablage suchen, wenn gefunden
; seine Arbeit erledigen und dann das Skript beenden.
; - Eine 'Alles-in-einem'-Funktion hinzufügen, um den ausgewählten Windows-Pfad zu kopieren und dann das Ergebnis auszugeben.
; - Was auch immer mir sonst noch einfällt.
;
; --------------------------------------------------------------------------------------------------------------
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
AppsKey::
; Eine neue Variable erstellen, Inhalt der Zwischenablage speichern (sollte ein Windows-Pfad sein)
NewStr := Clipboard
; Entfernen der ersten 2 Zeichen (sollte ein Laufwerksbuchstabe und Doppelpunkt sein) und Umwandlung des Buchstabens in Kleinbuchstaben
; HINWEIS: Ich könnte wahrscheinlich die folgenden 3 Zeilen durch einen regexreplace ersetzen, aber derzeit bin ich faul und in Eile.
tmpVar := SubStr(NewStr, 1, 2)
StringLower, tmpVar, tmpVar
; Ersetzen des Großbuchstaben-Laufwerksbuchstabens und des Doppelpunkts durch den Kleinbuchstaben-Laufwerksbuchstaben und Doppelpunkt
NewStr := StrReplace(NewStr, SubStr(NewStr, 1, 2), tmpVar)
; Ersetzen von Backslashes durch Schrägstriche
NewStr := StrReplace(NewStr, "\", "/")
; Alle Doppelpunkte durch nichts ersetzen
NewStr := StrReplace(NewStr, ":", "")
; Das letzte Zeichen entfernen, wenn es ein abschließender Schrägstrich ist
NewStr := RegExReplace(NewStr, "/$")
; Ein führendes Schrägstrich hinzufügen, wenn noch nicht vorhanden
if RegExMatch(NewStr, "^/") == 0
NewStr := "/" . NewStr
; Wenn im Pfad Leerzeichen vorhanden sind ... in doppelte Anführungszeichen setzen
if RegExMatch(NewStr, " ") > 0
NewStr := """" . NewStr . """"
; Das Ergebnis an das aktive Fenster senden
SendInput % NewStr