Qual é o WORKDIR padrão no docker?

87

Podemos usar WORKDIRpara definir um diretório como diretório de trabalho em Dockerfile, mas qual é o valor padrão se não definirmos?

Freewind
fonte
2
Basta executar um Dockerfile de linha única comRUN pwd
kilgoretrout

Respostas:

32

O padrão é de fato /como afirmado em outro lugar. Vale a pena mencionar, porém, que você quase nunca executará a partir de uma imagem docker vazia ( FROM scratch), portanto, WORKDIRé provavelmente definido pela imagem base que você está usando.

Por exemplo, https://github.com/docker-library/tomcat/blob/master/Dockerfile-alpine.template tem WORKDIR $CATALINA_HOME, e https://github.com/dockerfile/ubuntu/blob/master/Dockerfile tem WORKDIR /root. ( https://hub.docker.com/r/base/archlinux/~/dockerfile/ não usa, WORKDIRno entanto.)

É melhor, portanto, definir o seu próprio WORKDIRexplicitamente.

lmat - Reintegrar Monica
fonte
13

O diretório de trabalho padrão para executar binários em um contêiner é o diretório raiz ( /), mas o desenvolvedor pode definir um diretório diferente com o comando Dockerfile WORKDIR. O operador pode substituir isso por:

-w="": Working directory inside the container

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

Hvardhan
fonte
6

Como não há usuários, mas uma raiz em um docker recém-nascido ou um contêiner estritamente falando. Então, para cada mudança, haverá um commit para aquele container como esse cara disse. Portanto, o pwd disso ou como você pediu, o WORKDIR é / root por padrão e toda vez que você executa um /bin/bashassim:

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

em um contêiner em execução, ele o colocará aqui /no diretório raiz.

Vamsidhar Muggulla
fonte
Sua resposta não está apenas fora do assunto, está simplesmente errada. Primeiro, a questão é: Qual é o WORKDIR padrão de uma IMAGEM se não estiver definido explicitamente no Dockerfile. Sua resposta dizendo que o diretório de trabalho padrão de um novo CONTAINER /está incorreta e irrelevante. O diretório de trabalho padrão de um novo contêiner é igual ao diretório de trabalho padrão da imagem. Por exemplo, acabei de executar docker exec -ti <my_app> /bin/bash;o novo processo bash pwd, e vejo que o diretório de trabalho é /app.
lmat - Reintegração de Monica em