Podemos usar WORKDIR
para definir um diretório como diretório de trabalho em Dockerfile
, mas qual é o valor padrão se não definirmos?
docker
dockerfile
Freewind
fonte
fonte
RUN pwd
Respostas:
docker workdir
diz que é
/
, então o diretório raizfonte
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 temWORKDIR /root
. ( https://hub.docker.com/r/base/archlinux/~/dockerfile/ não usa,WORKDIR
no entanto.)É melhor, portanto, definir o seu próprio
WORKDIR
explicitamente.fonte
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:Aqui: https://docs.docker.com/engine/reference/run/#workdir
fonte
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/bash
assim:$docker exec -i -t 53f784fwer54 /bin/bash
em um contêiner em execução, ele o colocará aqui
/
no diretório raiz.fonte
/
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 executardocker exec -ti <my_app> /bin/bash;
o novo processo bashpwd
, e vejo que o diretório de trabalho é/app
.