Podemos usar WORKDIR
para configurar un directorio como directorio de trabajo Dockerfile
, pero ¿cuál es el valor predeterminado si no lo configuramos?
Respuestas:
dice que es /
, por lo que el directorio raíz
De hecho, el valor predeterminado es el /
que se indica en otra parte. Sin embargo, vale la pena mencionar que casi nunca se ejecutará desde una imagen de la ventana acoplable vacía ( FROM scratch
), por lo que WORKDIR
es probable que la establezca la imagen base que esté utilizando.
Por ejemplo, https://github.com/docker-library/tomcat/blob/master/Dockerfile-alpine.template tiene WORKDIR $CATALINA_HOME
, y https://github.com/dockerfile/ubuntu/blob/master/Dockerfile tiene WORKDIR /root
. ( https://hub.docker.com/r/base/archlinux/~/dockerfile/ no se usa WORKDIR
sin embargo).
Por lo tanto, es mejor establecer el suyo de forma WORKDIR
explícita.
El directorio de trabajo predeterminado para ejecutar binarios dentro de un contenedor es el directorio raíz ( /
), pero el desarrollador puede establecer un directorio diferente con el comando Dockerfile WORKDIR. El operador puede anular esto con:
-w="": Working directory inside the container
Como no hay usuarios sino un root en una ventana acoplable recién nacida o un contenedor estrictamente hablando. Entonces, por cada cambio habrá un compromiso para ese contenedor, como dijo este tipo . Por lo tanto, el pwd de eso o, como le preguntó, WORKDIR es /
root de forma predeterminada y cada vez que ejecuta una de /bin/bash
esta manera:
$docker exec -i -t 53f784fwer54 /bin/bash
en un contenedor en ejecución, lo colocará aquí /
en el directorio raíz.
/
es incorrecta e irrelevante. El directorio de trabajo predeterminado de un nuevo contenedor es el mismo que el directorio de trabajo predeterminado de la imagen. Por ejemplo, acabo de ejecutar docker exec -ti <my_app> /bin/bash;
entonces en el nuevo proceso de bash pwd
, y veo que el directorio de trabajo es /app
.
RUN pwd