Boas notícias: o novo docker (versão 19.03 (atualmente experimental)) será capaz de executar rootless negando os problemas que podem ocorrer usando um usuário root. Chega de mexer com permissões elevadas, root e qualquer coisa que possa abrir sua máquina quando você não quiser.
Vídeo sobre isso de [DockerCon 2019] endurecimento Daemon Docker com modo sem raízes
Algumas ressalvas ao modo Docker sem raízes
Os engenheiros do Docker dizem que o modo sem raízes não pode ser considerado um substituto para o conjunto completo de recursos do Docker engine. Algumas limitações ao modo sem raízes incluem:
- cgroups controles de recursos, perfis de segurança apparmor, checkpoint/restore, redes de sobreposição etc. não trabalhe no modo sem raízes.
- Expor portas de contêineres atualmente requer processo auxiliar socat manual.
- Apenas as distros baseadas no Ubuntu suportam sistemas de arquivos de sobreposição no modo rootless.
- O modo Rootless é atualmente fornecido apenas para compilações noturnas que podem não ser tão estáveis quanto você está acostumado.
A partir do docker 19.3, isso é obsoleto (e mais perigoso do que o necessário):
O manual docker tem isso a dizer sobre isso:
Dando acesso não root
O daemon do docker sempre é executado como usuário root e, desde a versão 0.5.2 do Docker, o daemon do docker se liga a um soquete Unix em vez de uma porta TCP. Por padrão, esse soquete Unix é de propriedade da raiz do Usuário e, portanto, por padrão, você pode acessá-lo com sudo.
A partir da versão 0.5.3, se você (ou seu instalador do Docker) criar um grupo Unix chamado docker e adicionar usuários a ele, o daemon do docker fará com que a propriedade do soquete Unix seja lida/gravável pelo grupo docker quando o daemon for iniciado. O daemon docker deve sempre ser executado como usuário root, mas se você executar o cliente docker como usuário no grupo docker, não precisará adicionar sudo a todos os comandos do cliente. A partir de 0.9.0, você pode especificar que um grupo diferente do docker deve possuir o soquete Unix com a opção-G.
Aviso: o grupo docker (ou o grupo especificado com-G) é equivalente à raiz; consulte Detalhes da superfície de ataque do Docker Daemon e este blogpost em Por que não permitimos que usuários não raiz executem o Docker no CentOS, Fedora ou RHEL (obrigado michael-n).
No recente lançamento do modo sem raízes experimental no GitHub, os engenheiros mencionam que o modo sem raiz permite executar dockerd como um usuário não privilegiado, usando user_namespaces( 7), mount_namespaces(7), network_namespaces(7).
Os usuários precisam executar dockerd-rootless.sh em vez de dockerd.
$ dockerd-rootless.sh --experimental
Como o modo sem raízes é experimental, os usuários precisam sempre executar dockerd-rootless.sh com-experimental.
Importante para ler: etapas pós-instalação Para Linux (também tem links para Detalhes da superfície de ataque do Docker Daemon).
Gerenciar o Docker como um usuário não root
O daemon docker se liga a um soquete Unix em vez de uma porta TCP. Por padrão, esse socket Unix é de propriedade da raiz do Usuário e outros usuários só podem acessá-lo usando sudo. O daemon do docker sempre é executado como usuário root.
Se você não quiser usar sudo ao usar o comando docker, crie um grupo Unix chamado docker e adicione usuários a ele. Quando o daemon docker é iniciado, ele torna a propriedade do soquete Unix read / gravável pelo grupo docker.
-
Adicione o grupo docker se ele ainda não existir:
sudo groupadd docker
-
Adicione o usuário conectado " $ USER & quot; ao grupo docker. Altere o nome de usuário para corresponder ao seu usuário preferido se você não quiser usar o usuário atual:
sudo gpasswd -a $USER docker
Ou fazer um newgrp docker
ou faça 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 sudo.