No entanto, ao trabalhar no Docker, podemos encontrar casos em que precisamos criar e usar recursos do Docker, mas não temos acesso root.
Ou talvez você queira permitir que vários usuários em um determinado sistema acessem e usem o Docker sem conceder permissão root a todos os usuários.
Neste tutorial, aprenderemos sobre o Docker sem root, o que ele significa, como funciona e como podemos usá-lo para permitir que usuários sem acesso root usem o Docker e seus serviços associados.
O que é um Docker sem raiz?
Por padrão, depois de instalar o Docker, o daemon do Docker e suas ferramentas exigem privilégios de root no sistema host. Isso pode resultar significativamente em um risco de segurança se o Docker for comprometido, o que pode dar acesso root ao invasor.
Rootless Docker é um recurso que nos permite usar e executar o daemon Docker e os contêineres associados sem permissões de root.
Como funciona
Embora possa ser um desafio mergulhar no funcionamento técnico de um ambiente docker sem root, a seguir está uma visão geral de alto nível que explica o que um docker sem root faz e como ele funciona nos bastidores.
Namespaces de usuário – Um dos recursos importantes que um docker sem root utiliza são os namespaces de usuário. Este recurso fundamental do kernel Linux permite que os processos tenham IDs de usuários e grupos diferentes dentro do namespace em comparação com o exterior. Isso significa que um processo pode ser executado como usuário root dentro de seu namespace, mas fora dele, ele é executado como um usuário normal.
Rede – O próximo recurso do Docker sem root é a rede. Por padrão, o daemon docker normal depende de pilhas de rede, como iptables e pontes que exigem permissões de root.
O Docker aproveita recursos como o slirp4netns, que fornece uma pilha TCP/IP de modo de usuário em um docker sem root. Isso permite que o Docker acesse a rede sem permissão de root no sistema host.
Armazenar – A próxima parte essencial de um docker sem root é o driver de armazenamento. Por padrão, o Docker usa um driver de armazenamento overlay2, que, como você pode imaginar, requer permissões de root. Em vez disso, uma instância do docker sem root usa o driver fuse-overlayfs. Este driver é baseado no FUSE overlay fs, o que nos permite montá-lo sem permissões de root.
Acima estão alguns dos componentes essenciais de uma instância do docker sem root. Lembre-se de que isso não explora o funcionamento completo de um docker sem root. Considere a documentação para saber mais.
Docker sem raiz – Requisitos
Vamos sair da teoria e aprender como criar e configurar um ambiente Docker sem root.
Para acompanhar esta postagem, certifique-se de ter o seguinte:
- Um sistema baseado em Linux com permissões de root.
- Acesso à rede.
Configurando o sistema com UIDMap
Antes de instalar e configurar o Docker, devemos instalar e configurar o sistema com o utilitário uidmap.
UIDMap nos permite gerenciar mapeamentos UID e GUI dos processos em um sistema Linux no conteúdo de namespaces de usuários. Lembra quando mencionamos que o Docker sem root aproveita os namespaces de usuário? Esta ferramenta nos permitirá especificar os mapeamentos UID e GID e seus namespaces correspondentes.
Comece atualizando os pacotes do sistema da seguinte maneira:
$ sudo atualização do apt-getEm seguida, instale o utilitário uidmap conforme mostrado:
$ sudo apt-get instalar mapa uid -e
Instalando o Docker sem root
A próxima etapa é processar e instalar o Docker sem root. Podemos fazer isso seguindo as etapas simples descritas abaixo:
Comece baixando o script do instalador do docker sem root no link mostrado abaixo:
https://get.docker.com/rootless
Você pode usar cURL ou WGET.
$ ondulação -sSL https: // get.docker.com / sem raízes | eh
Observe que você não pode executar o comando acima como usuário root.
Assim que a instalação for concluída, edite seu arquivo .bashrc usando seu editor de texto favorito:
$ nano .bashrcEm seguida, adicione as seguintes entradas ao arquivo de configuração bashrc:
exportar XDG_RUNTIME_DIR = / lar / Ubuntu / .docker / correrexportar CAMINHO = / lar / Ubuntu / caixa: $PATH
exportar DOCKER_HOST =unix: /// lar / Ubuntu / .docker / correr / docker.sock
Certifique-se de alterar o usuário de “ubuntu” para o usuário que deseja instalar o Docker. A saída do script fornecerá o conteúdo a ser adicionado ao arquivo .bashrc.
Salve as alterações e feche o editor.
Na próxima etapa, precisamos iniciar o daemon Docker sem root. Podemos fazer isso usando systemctl, conforme mostrado no comando abaixo:
sistemactl --ubuntu iniciar janela de encaixeDepois de iniciado, você pode usar os comandos do Docker para iniciar e configurar contêineres do Docker.
Conclusão
Neste tutorial, aprendemos a funcionalidade do Docker sem root, como ele funciona e como podemos configurá-lo em um sistema Linux. Sinta-se à vontade para verificar a documentação do docker sem root para saber mais.