Estou executando o docker dentro de um container usando o comando abaixo:
docker run --rm -ti --privileged -v /var/run/docker.sock:/var/run/docker.sock docker:1.12 sh
Dentro do shell desse contêiner, vejo um diretório com vários arquivos. Digamos que /project
com um arquivo build.gradle
. Gostaria de iniciar um novo container e montar este diretório usando o comando abaixo
docker run -ti --rm -v /project:/project openjdk:8-jdk bash -c "ls /project"
.
No entanto, parece que o diretório do projeto está vazio, ls /project
não mostra nenhum arquivo.
Agora tentando montar um arquivo:
docker run -ti --rm -v /project/build.gradle:/project/build.gradle openjdk:8-jdk bash -c "ls /project/"
Desta vez, a pasta mostra o arquivo.
Qualquer um que tenha uma ideia de por que a montagem do volume não funciona como esperado. Isso é um problema de permissão?
Não. Dentro do contêiner "docker", você obtém apenas um cliente Docker, não a coisa toda. Depois de montar o soquete do Docker dentro do contêiner "docker", quando você executa os comandos do Docker, eles vão direto para o "servidor" do Docker em execução no host Docker real. Dessa forma, espera-se que essa pasta exista em seu Docker Host.
Exemplo de como montar um volume com docker no docker: