Frage zu Docker - Batch-Script mit ".." im Pfad macht Probleme

stna1981

Commander
Registriert
März 2007
Beiträge
2.505
Hallo,

wollte ein altes Docker-Image wiederbeleben, das Run-Script generiert folgendes Aufruf:

Code:
docker run -dit --name openssl1 -v C:\Users\xxx\Webstorm\Projects\docker-openssl\scripts\..\ssl:/usr/local/ssl/ openssl:tmp


Das tut leider nicht, erhalte immer den Fehler:
Code:
docker: Error response from daemon: file does not exist.


Führe ich den Befehl aber so aus:
Code:
docker run -dit --name openssl1 -v C:\Users\xxx\Webstorm\Projects\docker-openssl\ssl:/usr/local/ssl/ openssl:tmp

- also ohne den Sprung ins parent dir mit '..' - dann tut es. Früher lief das mal, hat sich da was geändert oder was mache ich falsch?

VIele Grüße

Stefan
 
Da es sich ja um Windows handelt:
Darf ich fragen, was du nutzt bzw installiert hast, um den Container unter Windows starten zu können?
 
Die Docker CLI ist bei Volumes etwas empfindlich was relative Pfade angeht, daran könnte das liegen. Es würde mich nicht wundern wenn es da irgendwann Änderungen gab die diese Variante entfernt haben.

Ich generiere generell den vollen Pfad für alles wenn ich Docker oder Docker Compose aus einem Skript oder Programm starte. Es passiert zu einfach das man aus Versehen ein named volume statt einem bind volume erstellt, der Syntax ist da sehr ähnlich bei relativen Pfaden.

kuddlmuddl schrieb:
Da es sich ja um Windows handelt:
Darf ich fragen, was du nutzt bzw installiert hast, um den Container unter Windows starten zu können?

Wenn man ein Windows 10 mit HyperV (also nicht Home Edition) hat läuft Docker für Windows da einfach, im Hintergrund ist da immer noch eine VM. Ansonsten gibt es auch neu Docker mit WSL2, das geht auch mit Windows 10 Home, aber nur mit der aktuellen Betaversion von Windows. Das ist für die Zukunft sicher die interessanteste Version um Docker unter Windows zu verwenden.
 
Grundsätzlich kanonische Pfade verwenden. Es gibt keinen Grund . oder .. in Mitten eines Pfades zu verwenden (d.h. wenn . oder .. Im Pfad noch einen Präfix haben), da die Information immer redundant ist.

Gruss
 
Also das ganze läuft unter Windows 10 Enterprise mit der aktuellsten Docker-Version. Seit wann es nicht mehr mit den alten Pfaden geht, weiß ich nicht, ich muss jetzt wegen Rechnerwechsel die Container neu einbinden und dabei ist mir das Problem aufgefallen. Das Problem ist, dass es einige Container sind und ich dann alle Scripte anpassen muss, aber wenn es keine andere Möglichkeit außer den kanonischen Pfaden gibt, dann bleibt mir wohl nix anderes übrig...
 
stna1981 schrieb:
Also das ganze läuft unter Windows 10 Enterprise mit der aktuellsten Docker-Version. Seit wann es nicht mehr mit den alten Pfaden geht, weiß ich nicht, ich muss jetzt wegen Rechnerwechsel die Container neu einbinden und dabei ist mir das Problem aufgefallen. Das Problem ist, dass es einige Container sind und ich dann alle Scripte anpassen muss, aber wenn es keine andere Möglichkeit außer den kanonischen Pfaden gibt, dann bleibt mir wohl nix anderes übrig...

Was meinst du mit Container einbinden? Ich denke nicht, dass du drum herum kommst die Pfade anzupassen. Die Logik ist aber ziemlich einfach: Für alle Pfadnamen der Form a/b/../c ist a/c derselbe Pfad (wobei "a" entweder '.', '..' oder ein Präfix eines absoluten Pfades sein kann).

Gruss
 
Zurück
Oben