Wir können WORKDIR
ein Verzeichnis als Arbeitsverzeichnis festlegen Dockerfile
, aber was ist der Standardwert, wenn wir ihn nicht festlegen?
Antworten:
sagt es ist /
, also das Stammverzeichnis
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 WORKDIR
wahrscheinlich 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 WORKDIR
explizit festzulegen.
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
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.
/
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 pwd
und sehe, dass das Arbeitsverzeichnis ist /app
.
RUN pwd