Correção: não é possível conectar ao Docker Daemon



Experimente Nosso Instrumento Para Eliminar Problemas

Você pode ficar muito confuso se um terminal Linux estiver emitindo um erro “não é possível conectar-se ao daemon do Docker”, porque muito provavelmente o daemon do Docker já está em execução quando você vê isso. Embora você queira garantir que sim, provavelmente ficará confuso ao descobrir que esse erro nem mesmo tem a ver com o serviço não ter sido iniciado. Principalmente é jogado em usuários que não se adicionaram ao grupo Docker.



O Docker emite um grupo de usuários separado em sistemas Linux, e aqueles que têm contas de usuário que não são adicionadas a ele não serão capazes de se conectar a ele. Lembre-se de que adicionar uma conta de usuário ao grupo Docker é funcionalmente equivalente ao root, já que o daemon está sempre em execução como usuário root. Isso pode ser esperado em um sistema Ubuntu Server com um único usuário, mas certamente será algo a se ter em mente para aqueles que executam o Docker no Arch, Fedora ou Debian.



Método 1: verificar o status do serviço Docker

Embora seja quase certo, você precisará verificar se o serviço Docker está em execução. Em uma janela de terminal, execute systemctl status docker.service como um usuário normal. Você deve obter algumas informações sobre qual número PID do daemon do Docker foi atribuído. Caso contrário, será necessário reiniciar o serviço.



Se você o reiniciou, tente fazer o que quer que tenha gerado o erro “não é possível conectar-se ao daemon do Docker”. Se agora funcionar, então você simplesmente não tinha o serviço em execução e realmente não precisa se preocupar com mais nada além do motivo pelo qual ele não estava funcionando. Infelizmente, isso não funciona na maioria dos casos, então você precisará seguir em frente nessas situações.

Método 2: adicionando usuários ao grupo Docker

Corre informação do docker a partir da linha de comando, o que normalmente fornecerá o erro “não é possível se conectar ao daemon do Docker” mais uma vez.

Se for esse o caso, você precisará executar sudo groupadd docker; sudo usermod -aG docker $ USER para se adicionar ao grupo adequado. Se isso der um erro porque você não tem usermod, então você pode modificar o comando para rodar como sudo groupadd docker; sudo gpasswd -a janela de encaixe $ USER , mas isso geralmente não deve ser um problema porque a maioria das distribuições Linux de nível comercial estão trabalhando com o mesmo conjunto de ferramentas. Em qualquer caso, execute newgrp docker para que você possa se conectar ao novo grupo do docker, se ainda não estiver.



Lembre-se de que isso sempre adicionará o usuário com o qual você está conectado no momento, o que não deve ser um problema na maioria dos sistemas das pessoas que não têm várias contas além de um usuário e a conta root. Como você tem acesso administrativo por enquanto, execute sudo chgrp docker / usr / bin docker; sudo chgrp docker /var/run/docker.sock para corrigir as permissões no soquete docker e no comando. Normalmente, o arquivo de socket pertence apenas ao usuário root, então isso irá corrigir isso.

Depois de executá-lo, você não deve ter nenhum problema porque agora ele pertence ao mesmo grupo que você criou no comando anterior. Você vai querer testar para garantir que o docker seja executado sem sudo, então digite docker run hello-world como um usuário regular para garantir que você não esteja recebendo nenhum outro erro.

Neste ponto, poucos usuários ainda receberão qualquer tipo de mensagem de erro. A maioria das coisas deve ser corrigida neste ponto, mas se você ainda estiver tendo problemas, saia completamente. Tente abrir outra janela do emulador de terminal, mas se isso não funcionar às vezes ajuda a desligar o sistema para uma reinicialização completa, se isso for viável

Método 3: usando ACLs para modificar metadados do Docker

Se você não quiser pertencer a um grupo que o torna um usuário root, pode definir o arquivo de soquete para funcionar apenas com certas permissões. Você pode ignorar o processo gpasswd se preferir fazer dessa forma. Ter que varrer o sistema de arquivos para diferentes entradas de ACL é um fardo para quem está fazendo uma auditoria de segurança, mas evita que você tenha que usar o grupo do docker inteiramente.

Se você quiser fazer dessa maneira, pode executar sudo setfacl -m usuário: nome: rw /var/run/docker.sock enquanto substitui usuário e nome pelos rótulos apropriados. Isso concede permissão para acessar o socket Docker em /var/run/docker.sock, que deve funcionar com Debian e Ubuntu Server.

3 minutos lidos