¿Cuál es el WORKDIR predeterminado en la ventana acoplable?

85

Podemos usar WORKDIRpara configurar un directorio como directorio de trabajo Dockerfile, pero ¿cuál es el valor predeterminado si no lo configuramos?

Freewind
fuente
2
Simplemente ejecute un Dockerfile de una sola línea conRUN pwd
kilgoretrout

Respuestas:

31

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.

Expiación limitada
fuente
13

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

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

Hvardhan
fuente
6

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.

Vamsidhar Muggulla
fuente
Su respuesta no solo está fuera de tema, es simplemente incorrecta. Primero, la pregunta es: ¿Cuál es el WORKDIR predeterminado de una IMAGEN si uno no está configurado explícitamente en el Dockerfile? Su respuesta que dice que el directorio de trabajo predeterminado de un CONTENEDOR nuevo /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.
Expiación limitada