Podemos usar WORKDIRpara 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 WORKDIRes 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 WORKDIRsin embargo).
Por lo tanto, es mejor establecer el suyo de forma WORKDIRexplí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/bashesta 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