Wir können WORKDIR
ein Verzeichnis als Arbeitsverzeichnis festlegen Dockerfile
, aber was ist der Standardwert, wenn wir ihn nicht festlegen?
docker
dockerfile
Freilauf
quelle
quelle
RUN pwd
Antworten:
Docker Workdir
sagt es ist
/
, also das Stammverzeichnisquelle
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 dasWORKDIR
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 hatWORKDIR /root
. ( https://hub.docker.com/r/base/archlinux/~/dockerfile/ wird nicht verwendetWORKDIR
.)Es ist daher am besten, Ihre eigenen
WORKDIR
explizit festzulegen.quelle
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:Hier: https://docs.docker.com/engine/reference/run/#workdir
quelle
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.quelle
/
falsch und irrelevant ist. Das Standardarbeitsverzeichnis eines neuen Containers entspricht dem Standardarbeitsverzeichnis des Bildes. Zum Beispiel habe ich geradedocker exec -ti <my_app> /bin/bash;
den neuen Bash-Prozess ausgeführtpwd
und sehe, dass das Arbeitsverzeichnis ist/app
.