142 votes

Docker : Quel est le WORKDIR par défaut dans un Dockerfile?

Nous pouvons utiliser WORKDIR pour définir un répertoire comme répertoire de travail dans le fichier Dockerfile, mais quelle est la valeur par défaut si nous ne la définissons pas ?

8 votes

Exécutez simplement un Dockerfile d'une seule ligne avec RUN pwd

96voto

ThoFin Points 624

docker workdir

dit que c'est /, donc le répertoire racine

67voto

Limited Atonement Points 1446

La valeur par défaut est en effet / comme indiqué ailleurs. Il convient de mentionner, cependant, que vous ne lancerez presque jamais à partir d'une image docker vide (FROM scratch), donc le WORKDIR est probablement défini par l'image de base que vous utilisez.

Par exemple, https://github.com/docker-library/tomcat/blob/master/Dockerfile-alpine.template a WORKDIR $CATALINA_HOME, et https://github.com/dockerfile/ubuntu/blob/master/Dockerfile a WORKDIR /root. (https://hub.docker.com/r/base/archlinux/~/dockerfile/ n'utilise cependant pas WORKDIR.)

Il est donc préférable de définir explicitement votre propre WORKDIR.

26voto

hvardhan Points 75

Le répertoire de travail par défaut pour l'exécution des binaires dans un conteneur est le répertoire racine (/), mais le développeur peut définir un répertoire différent avec la commande WORKDIR du fichier Dockerfile. L'opérateur peut outrepasser ceci avec:

-w="": Répertoire de travail à l'intérieur du conteneur

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

6voto

Comme il n'y a pas d'utilisateurs mais seulement un root dans un docker fraîchement créé ou un conteneur stricto sensu. Ainsi, pour chaque changement, il y aura un commit pour ce conteneur comme l'a dit ce gars. Par conséquent, le pwd de cela ou comme vous l'avez demandé le WORKDIR est / par défaut et chaque fois que vous exécutez un /bin/bash de cette manière :

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

sur un conteneur en cours d'exécution, cela vous placera ici / dans le répertoire racine.

7 votes

Votre réponse n'est pas seulement hors sujet, elle est tout simplement fausse. Tout d'abord, la question est : Quel est le WORKDIR par défaut d'une IMAGE si celui-ci n'est pas défini explicitement dans le Dockerfile. Votre réponse affirmant que le workdir par défaut d'un nouveau CONTAINER est `/` est incorrecte et non pertinente. Le workdir par défaut d'un nouveau container est le même que celui de l'image. Par exemple, je viens d'exécuter `docker exec -ti /bin/bash;` puis dans le nouveau processus bash, `pwd`, et je vois que le répertoire de travail est `/app`.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X