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 o sudo:
sudo docker.io ps
Como posso configurar o Docker para não precisar prefixar cada comando do Docker com o sudo?
apt-cache policy docker-engine
(url apt deve ser de dockerproject.org)Respostas:
Boas notícias: o novo docker (versão 19.03 (atualmente experimental)) poderá executar sem raiz, negando os problemas que podem ocorrer usando um usuário root. Chega de mexer com permissões elevadas, raiz e qualquer coisa que possa abrir sua máquina quando você não quiser.
Vídeo sobre isso no daemon [DockerCon 2019] Hardening Docker com modo sem raiz
A partir do docker 19.3, isso é obsoleto (e mais perigoso do que o necessário):
O manual do docker tem a dizer sobre isso:
Importante para ler: etapas de pós-instalação para Linux (também vincula aos detalhes do Docker Daemon Attack Surface ).
Adicione o grupo de janelas de encaixe se ele ainda não existir:
Adicione o usuário conectado "$ USER" ao grupo de janelas de encaixe. Altere o nome do usuário para corresponder ao seu usuário preferido, se você não quiser usar seu usuário atual:
Faça um
newgrp docker
ou efetue logout / logon para ativar as alterações nos grupos.Você pode usar
para verificar se você pode executar o docker sem o sudo.
fonte
newgrp docker
não funcionou para mim, eu tive que sair.docker login
, poderá descobrir que a.docker
pasta criada na sua pasta pessoal pertenceroot
. assim você iria encontrar esse aviso ao executar comandos docker:WARNING: Error loading config file:/home/myuser/.docker/config.json - stat /home/myuser/.docker/config.json: permission denied
. Eu fiz do meu usuário.docker
pasta acessível sem sudo assim:sudo chgrp -hR docker ~/.docker && sudo chown -R myuser ~/.docker
. ochgrp
não pareceu ajudar, então provavelmente eu deveria apenas recomendar a etapa do chown.Para executar o comando docker sem
sudo
, você precisa adicionar seu usuário (que possui privilégios de root) ao grupo docker. Para esta execução, execute o seguinte comando:Agora, faça o logout do usuário e faça o login novamente. Esta solução é bem explicada aqui com o processo de instalação adequado.
fonte
O mecanismo pelo qual a adição de um usuário ao grupo
docker
concede permissão para executar o docker é obter acesso ao soquete do docker 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 alcançado através das ACLs.Só estou incluindo isso por completo.
Em geral, eu recomendo evitar ACLs sempre que uma boa alternativa baseada em grupos estiver disponível: é melhor se os privilégios em um sistema puderem ser entendidos observando apenas as participações em grupos. Ter que procurar entradas do ACL no sistema de arquivos para entender os privilégios do sistema é um encargo adicional para as auditorias de segurança.
Aviso 1 : tem a mesma
root
equivalência que adicionarusername
aodocker
grupo. Você ainda pode iniciar um contêiner de uma maneira que tenharoot
acesso ao sistema de arquivos host.Aviso 2 : as ACLs são significativamente mais difíceis para auditorias de segurança do que a segurança baseada em grupo. Provavelmente, evite ACLs, se possível, quando você puder usar grupos, pelo menos em ambientes relevantes para auditoria.
fonte