Problemas de permissão negada com o Docker no Linux Ubuntu, Linux Mint ou MacOs são frequentemente associados a arquivos ou permissões de serviços do sistema.

Porquê erros de “permission denied” acontecem com contêineres docker ou ao rodar docker-compose

Um problema comum ao executar o docker-compose pela primeira vez é a falta de permissão no arquivo docker.sock:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json: dial unix /var/run/docker.sock: connect: permission denied

Como resolver erros “permission denied” com docker-compose

Você precisa executar algumas etapas para entender se o serviço está em execução e, em seguida, configurar o usuário que executa os comandos do docker.

Verificando se o serviço Docker está rodando

Comece verificando o status do serviço docker:

sudo systemctl status docker

Caso não esteja ativo - como mostrado na imagem a seguir, use o comando start ou restart para iniciá-lo:

Docker status
Docker status

sudo systemctl start docker

Agora teste para ter certeza que o serviço está rodando:

sudo docker run hello-world

Adicionando a conta de usuário ao grupo docker

Agora é necessário adicionar o usuário que você está utilizando ao grupo que possui permissão para gravar nos arquivos privilegiados do Docker.

Inicie criando o grupo docker - note que ele já pode existir no sistema, isto não é um problema:

sudo groupadd docker

Após garantir a criação do grupo, adicione seu usuário a ele

sudo usermod -aG docker $USER

Por fim reincie o sistema e execute novamente os comandos docker-compose que estavam gerando o erro “permission denied”.

Considerações finais

Erros de permissão negada ocorrem não apenas com os serviços do Docker em seu sistema, provavelmente você pode seguir estas etapas como uma receita para entender outros serviços do sistema com erros semelhantes.