Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro de permissão no arquivo criado pelo Container

Eu criei um volume com o comando abaixo

docker run --name douglas -it -v "/home/douglas/Área de Trabalho:/var/www" ubuntu

porém, quando eu tento criar um arquivo txt dentro do container, na máquina host eu não consigo acessar e nem modificar o arquivo pois ele está criando o arquivo com permissão de usuário root. Existe alguma forma de eu criar os arquivos com a mesma permissão de usuário da minha máquina host? (Sem precisar ter que ir no host e dar permissão para o arquivo)

douglas@douglas:~/Área de Trabalho$ ls -la
total 12
drwxr-xr-x  2 douglas douglas 4096 ago  6 13:38 .
drwxr-xr-x 27 douglas douglas 4096 ago  5 09:52 ..
-rw-r--r--  1 root    root      14 ago  6 13:38 teste.txt
3 respostas

Fala Douglas,

Da maneira que está subindo o container, não é possível criar um usuário dentro do container, então dessa maneira sempre que acessar o container será pelo usuário root.

O que pode ser feito, é subir um container através de um Dockerfile e nele você criar um usuário com o mesmo ID do seu usuário host (normalmente é o id 1000). Assim quando você entrar no seu container, utilize o usuário criado e tudo que você fizer dentro do container, seu usuário host terá as mesmas permissões.

solução!

Fala Aristides, na verdade tem sim. Dei uma caçada nos fóruns da internet e descobri.

Precisa compartilhar com o container através de volumes as tabelas de usuários e grupos do host e também utilizar o parâmetro -u para informar o usuário e o grupo que você quer utilizar.

Ficaria assim o comando:

docker run --name douglas -it -v "/home/douglas/Área de Trabalho:/var/www" -v /etc/passwd:/etc/passwd -v /etc/group:/etc/group -u $(id -u):$(id -g) ubuntu

Fazendo dessa forma, todos os arquivos que eu crio dentro do /var/www do container ficarão disponíveis na minha área de trabalho e com a permissão do meu usuário atual, sem precisar do root ou de alguma outra permissão nos arquivos.

Nossa cara, realmente.

Tem o paramêtro -u mesmo, esqueci completamente, totalmente haha.

Vlw por dar esse feedback.

Att