Como posso usar o docker sem o sudo?

606

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

911

O manual de encaixe tem isto a dizer sobre isso :

  

Dar acesso não raiz

     

O daemon do docker sempre é executado como o usuário raiz e, como o Docker versão 0.5.2, o daemon do docker é vinculado a um soquete Unix em vez de a uma porta TCP. Por padrão, o soquete do Unix é de propriedade do usuário root e, por padrão, você pode acessá-lo com o sudo.

     

A partir da versão 0.5.3, se você (ou o instalador do Docker) criar um grupo Unix chamado docker e adicionar usuários a ele, o daemon do docker tornará a propriedade do soquete do Unix leitura / gravável pelo grupo de encaixe quando o daemon é iniciado. O daemon do docker sempre deve ser executado como o usuário raiz, mas se você executar o cliente do docker como um usuário no grupo de estivadores, não será necessário incluir o sudo em todos os comandos do cliente. A partir de 0.9.0, você pode especificar que um grupo diferente da janela de encaixe deve possuir o soquete Unix com a opção -G.

     

Aviso: o grupo de janelas de encaixe (ou o grupo especificado com -G) é equivalente à raiz; veja Detalhes do Surface de Ataque do Docker Daemon e esta postagem no blog Por que nós não permite que usuários não-root executem o Docker no CentOS, Fedora ou RHEL (obrigado michael-n).

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 ).

  

Gerenciar o Docker como um usuário não raiz

     

O daemon do docker é vinculado a um soquete do Unix em vez de uma porta TCP. Por padrão, o soquete Unix é de propriedade do usuário root e outros usuários só podem acessá-lo usando o sudo. O daemon do docker sempre é executado como usuário root.

     

Se você não quiser usar o sudo ao usar o comando docker, crie um grupo Unix chamado docker e adicione usuários a ele. Quando o daemon do docker é iniciado, ele torna a propriedade do soquete do Unix de leitura / gravável pelo grupo de encaixe.

  • 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
145

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
19

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.

    
por Christian Hujer 01.12.2017 / 17:08

Tags