Como posso usar o docker sem o sudo?

646

Nas páginas de documentação do Docker, todos os comandos de exemplo são mostrados sem sudo , como este:

docker ps

No Ubuntu, o binário é chamado docker.io . Também não funciona sem sudo:

sudo docker.io ps

Como posso configurar o Docker para que eu não precise prefixar todos os comandos do Docker com o sudo?

    
por Flimm 06.06.2014 / 10:17

3 respostas

970

O manual de encaixe tem isto a dizer sobre isso :

% bl0ck_qu0te%

Importante para ler: etapas de pós-instalação para Linux (também vincula a < a href="https://docs.docker.com/engine/security/security/#/docker-daemon-attack-surface"> Detalhes do Surface de ataque do daemon do Docker ).

% bl0ck_qu0te%
  • Adicione o grupo de estivadores, se ainda não existir:

    sudo groupadd docker
    
  • Adicione o usuário conectado "$ USER" ao grupo de encaixe. Altere o nome de usuário para corresponder ao seu usuário preferido, se você não quiser usar seu usuário atual:

    sudo gpasswd -a $USER docker
    
  • Faça um newgrp docker ou efetue logout / in para ativar as alterações nos grupos.

  • Você pode usar

    docker run hello-world
    

    para verificar se você pode executar o docker sem o sudo.

por Rinzwind 06.06.2014 / 10:24
158

Para executar o comando do docker sem sudo , você precisa adicionar seu usuário (que possui privilégios de root) ao grupo do docker. Para esta execução, siga o comando:

 sudo usermod -aG docker $USER

Agora, faça o logout do usuário e faça login novamente. Esta solução é bem explicada aqui com o processo de instalação adequado.

    
por Rohini Choudhary 27.02.2016 / 20:57
27

O mecanismo pelo qual adicionar um usuário ao grupo docker concede permissão para executar o docker é obter acesso ao soquete da janela de encaixe em /var/run/docker.sock . Se o sistema de arquivos que contém /var/run foi montado com as ACLs ativadas, isso também pode ser obtido via ACLs.

sudo setfacl -m user:username:rw /var/run/docker.sock

Eu só estou incluindo isso para completar.

Em geral, recomendo evitar as ACLs sempre que uma boa alternativa baseada em grupos estiver disponível: É melhor se os privilégios em um sistema puderem ser compreendidos observando apenas as participações em grupo. Ter que verificar o sistema de arquivos em busca de entradas de ACL para entender os privilégios do sistema é um fardo adicional para as auditorias de segurança.

Aviso 1 : Isso tem a mesma root de equivalência que adicionar username ao grupo docker . Você ainda pode iniciar um contêiner de forma que tenha root de acesso ao sistema de arquivos do host.

Aviso 2 : as ACLs são significativamente mais difíceis para as auditorias de segurança do que a segurança baseada em grupo. Provavelmente, evite as ACLs, se possível, quando puder usar grupos, pelo menos em ambientes relevantes para auditoria.

    
por Christian Hujer 01.12.2017 / 17:08