Podemos usar WORKDIR
para configurar un directorio como directorio de trabajo Dockerfile
, pero ¿cuál es el valor predeterminado si no lo configuramos?
docker
dockerfile
Freewind
fuente
fuente
RUN pwd
Respuestas:
docker workdir
dice que es
/
, por lo que el directorio raízfuente
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 queWORKDIR
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 tieneWORKDIR /root
. ( https://hub.docker.com/r/base/archlinux/~/dockerfile/ no se usaWORKDIR
sin embargo).Por lo tanto, es mejor establecer el suyo de forma
WORKDIR
explícita.fuente
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:Aquí: https://docs.docker.com/engine/reference/run/#workdir
fuente
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.fuente
/
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 ejecutardocker exec -ti <my_app> /bin/bash;
entonces en el nuevo proceso de bashpwd
, y veo que el directorio de trabajo es/app
.