Docker sem raiz

Docker Sem Raiz



Docker é uma das ferramentas mais poderosas e influentes para desenvolvimento e implantação de aplicativos modernos. Como desenvolvedores, nós o usamos em nossas máquinas locais para instalar e configurar rapidamente ambientes que atendam às necessidades de nossos aplicativos em segundos.

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:

  1. Um sistema baseado em Linux com permissões de root.
  2. 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-get

Em 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 .bashrc

Em seguida, adicione as seguintes entradas ao arquivo de configuração bashrc:

exportar XDG_RUNTIME_DIR = / lar / Ubuntu / .docker / correr

exportar 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 encaixe

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