Dockerfile WORKDIR bleibt auch im Image erhalten

Dockerfile WORKDIR bleibt auch im Image erhalten

Ich habe an einem Online-Tutorial teilgenommen, um mehr über Dockerfiles zu erfahren. Es gab eine Quizfrage:

Der Dockerfile-Befehl WORKDIR ändert Verzeichnisse:

  1. nur für den Rest des Dockerfiles
  2. als auch im fertigen Bild.

Meine Auswahl (falsch) war: „1. nur im Rest des Dockerfiles“.

Könnte mich jemand korrigieren, indem er ein Beispiel gibt, bei dem die zweite (richtige) Antwort von Nutzen sein könnte?

WORKDIR in den Dokumenten

Antwort1

Es kommt häufig vor, dass Sie Code aus einem bestimmten Verzeichnis ausführen müssen. Es kann sein, dass die von Ihnen ausgeführte Anwendung Dateien im aktuellen Verzeichnis bearbeitet, es kann sein, dass die Anwendung eine Konfiguration im aktuellen Verzeichnis erwartet oder sich die Anwendung einfach im aktuellen Verzeichnis befindet. WORKDIRErmöglicht dem Image-Ersteller, dies einzurichten, sodass sich die Personen, die den Container ausführen, nicht darum kümmern müssen.

Ein Anwendungsfall, den ich beispielsweise schon einmal hatte, ist das Erstellen eines Docker-Containers mit einer Anwendung, die Dateien im aktuellen Verzeichnis bearbeitet. Ohne Einstellung WORKDIRmüssten Sie das Volume an einen Speicherort binden und dann cd /locationfür jeden Befehl Folgendes ausführen:

docker -v $PWD:/location someimage "cd /location; somecommand"

Durch die Einstellung WORKDIRauf /locationkönnen Sie Folgendes löschen cd:

docker -v $PWD:/location someimage somecommand

Das ist viel bequemer.

verwandte Informationen