Permissão negada ao executar o Docker após instalá-lo como um Snap

33

Instalei o Docker por meio da loja de software, que indicava que era um pacote Snap. O que é bom para mim, eu acho, mas, infelizmente, todos os comandos do Docker que eu tentei não funcionam:

$ docker info
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.30/info: dial unix /var/run/docker.sock: connect: permission denied

Alguma idéia de como consertar isso?

Edit: Eu trabalhei com isso por enquanto instalando o Docker a partir dos próprios repositórios do Docker , o que pode funcionar para as pessoas que navegam nessa pergunta também. Estou deixando a pergunta em aberto para quem quiser executá-la a partir do Snap.

Vincent
fonte
Janela de encaixe instalada dos repositórios oficiais de estivador. O Docker já estava em execução quando adicionei meu usuário ao dockergrupo, id -nGnão mostrou o docker e qualquer dockercomando resultou em um erro de permissão negada. O logoff e o logon novamente não funcionaram porque o processo do sistema docker continua em execução. A reinicialização do sistema ou a reinicialização do docker mostraram o usuário como parte do grupo do docker e permitiram a execução de comandos do docker. NOTA: 0 repetições, não é possível adicionar comentários.
Santosh Patel

Respostas:

33

Isto é da página do GitHub, você tentou estas etapas exatas:

If you are using Ubuntu Core 16,

Connect the docker:home plug as it's not auto-connected by default:

$ sudo snap connect docker:home

If you are using an alternative snap-compatible Linux distribution ("classic" in snap lingo), and would like to run docker as a normal user:

Create and join the docker group.

$ sudo addgroup --system docker
$ sudo adduser $USER docker
$ newgrp docker

You will also need to disable and re-enable the docker snap if you added the group while it was running.

$ sudo snap disable docker
$ sudo snap enable docker

Do Docker snap github

Mike Coleman
fonte
Eu não tinha visto aquela página, então obrigado pelo link. Dito isto, como não estou usando o Ubuntu Core, teria que seguir as addgroupinstruções, que acho que são sobre o que fiz, conforme as outras respostas. Infelizmente, eu preferiria não tocar mais no sistema atualmente em funcionamento, mas adoraria ouvi-lo se alguém tentar isso e conseguir fazê-lo funcionar.
31417 Vincent
2
desativação / permitindo pressão janela de encaixe fez o truque para mim, obrigado
Manish Kumar
1
Isso se aplica ao Ubuntu (Desktop) 19.04 também.
Nick Breen
31

A mensagem de erro informa que seu usuário atual não pode acessar o mecanismo do docker, porque você não possui permissões para acessar o soquete unix para se comunicar com o mecanismo.

Solução temporária

Use o sudocomando para executar os comandos com permissões elevadas sempre.

Solução permanente (sugerida)

Adicione o usuário atual ao dockergrupo. Isso pode ser alcançado digitando-se

sudo usermod -a -G docker $USER

Você precisa sair e fazer login novamente para que a associação ao grupo entre em vigor.

Fonte: techoverflow.net

ADDB
fonte
1
Seu Google-fu é melhor que o meu, aparentemente. Infelizmente, isso não funciona. Primeiro de tudo, o dockergrupo não existia. Em seguida, executei primeiro sudo addgroup dockere, em seguida, re-execute seu comando, depois desconecte-me e entre novamente. Infelizmente, o erro mostrado na pergunta persiste ...
Vincent
2
@Vincent você não esqueceu que as mudanças de grupo não acontecem imediatamente, não é? Tente newgrp dockerou
efetue
Não, desculpe, esqueci de mencionar que - eu atualizei meu comentário enquanto você respondia :) Correndo groups vincentdá:vincent adm cdrom sudo dip plugdev lpadmin sambashare docker
Vincent
@Incent apenas para referência, seu daemon do docker foi iniciado, certo? Tente sudo /etc/init.d/docker statusou sudo service docker statusteste isso.
ADDB
Hmm, eu não acho que isso funcione devido ao fato de ser um Snap: paste.ubuntu.com/25219172 Dito isso, ps cax | grep dockerd31034 ? Ssl 0:05 dockerd.
Vincent
6

Presumo que seu nome de usuário já esteja no grupo de janelas de encaixe. Para verificar isso, emita o comando abaixo.

id -nG

Caso contrário, você precisa adicionar seu usuário ao grupo de janelas, abaixo do comando.

sudo groupadd docker
sudo usermod -aG docker $USER

Quando você executa o comando sudo systemctl start docker, ele cria um processo de janela de encaixe. Esse processo da janela de encaixe contém dockerdencadeamento daemon. O comando também cria um docker.socksoquete Unix padrão . O docker.socksoquete é escutado continuamente pelo dockerdencadeamento daemon. Isso faz com que você possa executar o IPC no nível do kernel com o docker.pidprocesso. Para poder usar esse soquete de janela de encaixe, é necessário ter a permissão adequada do nível do processo ( docker.pid) e do nível do arquivo ( docker.sock). Portanto, a execução abaixo de dois comandos deve resolver seu problema. sudo chmod a+rwx /var/run/docker.sock # You can provide just execute permission sudo chmod a+rwx /var/run/docker.pid

Uddhav Gautam
fonte
Somente isso funcionando para o ubuntu 18.04. Muito obrigado Uddhav Gautam
Sabbir
3
sudo setfacl -m user:your_user_name:rw /var/run/docker.sock

não requer reinicialização e é mais seguro

Nahshon paz
fonte
1

Você deve adicionar o usuário ao grupo Docker ( consulte a documentação oficial ).

Você pode adicionar sudona frente do comando ou adicionar o usuário no dockergrupo usando este comando:

sudo usermod -aG docker <USER>

Efetue logout e logon novamente, para que sua participação no grupo seja reavaliada.

Heesen Ponnusawmy
fonte
Como o conteúdo desse link pode desaparecer, adicione os detalhes relevantes aqui.
Chai T. Rex
Não há necessidade, a outra resposta já mencionou adicionar o usuário ao grupo - não ajudou. (Além disso, nenhuma razão para que isso ajudaria para o snap instalar, mas não para instalar o regular.)
Vincent