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?
Respostas:
diz que é /
, então o diretório raiz
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, WORKDIR
no entanto.)
É melhor, portanto, definir o seu próprio WORKDIR
explicitamente.
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
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.
/
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
.
RUN pwd