Was ist das Standard-WORKDIR im Docker?

85

Wir können WORKDIRein Verzeichnis als Arbeitsverzeichnis festlegen Dockerfile, aber was ist der Standardwert, wenn wir ihn nicht festlegen?

Freilauf
quelle
2
Führen Sie einfach eine einzeilige Docker-Datei mitRUN pwd
kilgoretrout

Antworten:

31

Die Standardeinstellung ist in der Tat /wie an anderer Stelle angegeben. Es ist jedoch erwähnenswert, dass Sie fast nie von einem leeren Docker-Image ( FROM scratch) ausgeführt werden, sodass das WORKDIRwahrscheinlich durch das von Ihnen verwendete Basis-Image festgelegt wird.

Zum Beispiel https://github.com/docker-library/tomcat/blob/master/Dockerfile-alpine.template hat WORKDIR $CATALINA_HOME, und https://github.com/dockerfile/ubuntu/blob/master/Dockerfile hat WORKDIR /root. ( https://hub.docker.com/r/base/archlinux/~/dockerfile/ wird nicht verwendetWORKDIR .)

Es ist daher am besten, Ihre eigenen WORKDIRexplizit festzulegen.

Begrenzte Versöhnung
quelle
13

Das Standardarbeitsverzeichnis zum Ausführen von Binärdateien in einem Container ist das Stammverzeichnis ( /). Der Entwickler kann jedoch mit dem Befehl Dockerfile WORKDIR ein anderes Verzeichnis festlegen. Der Bediener kann dies überschreiben mit:

-w="": Working directory inside the container

Hier: https://docs.docker.com/engine/reference/run/#workdir

hvardhan
quelle
6

Da es keine Benutzer gibt, sondern eine Wurzel in einem gerade geborenen Docker oder einem Container, genau genommen. Also, für jede Änderung wird es ein Commit für diesen Container geben, wie dieser Typ sagte. Daher ist das pwd davon oder wie Sie gefragt haben, das WORKDIR / standardmäßig root und jedes Mal , wenn Sie Folgendes ausführen /bin/bash:

$docker exec -i -t 53f784fwer54 /bin/bash

Auf einem laufenden Container werden Sie hier /in das Root-Verzeichnis gestellt.

Vamsidhar Muggulla
quelle
Ihre Antwort ist nicht nur nicht zum Thema gehörend, sondern einfach falsch. Zunächst lautet die Frage: Was ist das Standard-WORKDIR eines BILDES, wenn eines nicht explizit in der Docker-Datei festgelegt ist? Ihre Antwort, dass das Standardarbeitsverzeichnis eines neuen CONTAINER /falsch und irrelevant ist. Das Standardarbeitsverzeichnis eines neuen Containers entspricht dem Standardarbeitsverzeichnis des Bildes. Zum Beispiel habe ich gerade docker exec -ti <my_app> /bin/bash;den neuen Bash-Prozess ausgeführt pwdund sehe, dass das Arbeitsverzeichnis ist /app.
Begrenzte Versöhnung