Como definir permissões no Docker em Linux de forma permanente?
Você pode configurar o comando docker
para ser utilizado sem a necessidade de utilização do comando sudo
.
Para fazer esta configuração basta seguir o passos pós instalação.
Antes de prosseguir é necessário saber algumas coisas.
docker
concede privilégio equivalente ao usuário root
. Para mais detalhes de como isso impacta a segurança em seu sistema, veja Docker Daemon Attack Surface.docker
sem conceder a permissão de root, veja Run the Docker daemon as a non-root user (Rootless mode).Agora vamos para as configurações necessárias:
1. crie o grupo docker
sudo groupadd docker
2. Adicione seu usuário ao grupo docker
.
sudo usermod -aG docker $USER
3. Faça o logout
e login
novamente, assim as configurações executadas nos comandos executados anteriormente possam ser carregadas.
Se estiver testando em uma máquina virtual, pode ser necessário reiniciar a máquina virtual para que as alterações entrem em vigor. Em um ambiente Linux de desktop com o X Windows (wsl ou wsl2), saia completamente da sua sessão e, em seguida, faça login novamente.
No Linux, você também pode executar o seguinte comando para ativar as alterações nos grupos:
newgrp docker
4. Verifique que você pode executar o docker
sem o comando sudo
.
docker run hello-world
Este comando vai fazer o download de uma imagem e executar em um container. Quando este container executar ele vai imprimir uma mensagem e vai finalizar a execução do container.
Se foi possível executar o comando acima sem o sudo
então a configuração foi feita com sucesso.
Caso contrário pode consultar se é possível resolver com alguma das dicas abaixo.
Solução de problemas
Se você executou comandos do docker-cli
utilizando sudo
antes de adicionar o seu usuário ao grupo docker
, pode ser que veja a seguinte mensagem de erro:
WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied
Para solucionar este problema, remova o diretório ~/.docker/
(ele é gerado automaticamente, mas qualquer personalização feita será perdida), ou mude quem é o dono deste diretório com os comandos:
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.docker" -R