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.

💡
O grupo 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.
💡
Também é possível executar o 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