Legen Sie das Arbeitsverzeichnis in Docker fest
Wenn eines existiert, ist das Arbeitsverzeichnis eines Prozesses in der Datenverarbeitung ein Verzeichnis in einem verknüpften hierarchischen Dateisystem, das für jeden Prozess dynamisch ist. In Docker können wir unser Arbeitsverzeichnis festlegen, indem wir unser Dockerfile bearbeiten und den Schlüssel WORKDIR
hinzufügen.
In diesem Artikel wird das Ändern unseres aktuellen und standardmäßigen Arbeitsverzeichnisses in Docker erläutert.
das WORKDIR
im Docker
Der Befehl WORKDIR
im Dockerfile bestimmt das Arbeitsverzeichnis für alle nachfolgenden Befehle RUN
, CMD
, ENTRYPOINT
, COPY
und ADD
. Wir können die Anweisung WORKDIR
mehrfach in einem Dockerfile verwenden.
Wenn wir einen relativen Pfad angeben, ist dieser relativ zum Pfad der vorherigen WORKDIR
-Anweisung.
Zum Beispiel:
WORKDIR /usr
WORKDIR src/serv
RUN sampleserv
Die Ausgabe des letzten sampleserv
-Befehls in diesem Dockerfile
wäre /usr/src/serv
.
Die Anweisung WORKDIR
kann Umgebungsvariablen auflösen, die zuvor mit der Anweisung ENV
angegeben wurden. Wir können jedoch nur Umgebungsvariablen verwenden, die explizit im Dockerfile festgelegt sind.
ENV DIRPATH=/usr
WORKDIR $DIRPATH/$DIRNAME
RUN sampleserv
Die letzte Ausgabe des sampleserv
-Befehls in dieser Docker-Datei wäre /usr/$DIRNAME
.
Das Standardarbeitsverzeichnis ist das Stammverzeichnis oder /
, falls nicht angegeben. Wenn Sie in Wirklichkeit kein Dockerfile von Grund auf neu erstellen (FROM scratch
), hat das von Ihnen verwendete Basis-Image möglicherweise bereits das WORKDIR
konfiguriert.
Wir empfehlen daher, Ihr WORKDIR
explizit zu setzen, um versehentliche Aktivitäten in unbekannten Ordnern zu verhindern.
Aus Gründen der Übersichtlichkeit und Zuverlässigkeit sollten wir für Ihr WORKDIR
immer absolute Pfade verwenden. Außerdem sollten wir WORKDIR
verwenden, anstatt Anweisungen wie RUN cd … && sample-code
zu erhöhen, die schwer zu lesen, zu beheben und zu warten sind.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn