Podemos usar WORKDIRpara 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, WORKDIRno entanto.)
É melhor, portanto, definir o seu próprio WORKDIRexplicitamente.
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/bashassim:
$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