Executando Docker Sem Permissões de Root
O Docker rootless é uma versão do Docker que permite rodar contêineres sem precisar de permissões de root no sistema. Ele aumenta a segurança, pois limita o acesso privilegiado, permitindo que desenvolvedores rodem contêineres isolados do sistema principal.
Benefícios do Docker Rootless
- Segurança: Menor risco de vulnerabilidades devido à ausência de acesso root.
- Facilidade de uso: Desenvolvedores podem usar Docker sem intervenção administrativa.
- Isolamento: Contêineres são executados com permissões limitadas.
Limitações
- Portas baixas: Não é possível expor diretamente portas abaixo de 1024 sem permissões adicionais.
- Recursos limitados: Certos recursos, como controle de rede avançada, podem ser restritos.
Casos de Uso
O Docker rootless é ideal para ambientes de desenvolvimento, CI/CD e qualquer cenário onde a segurança é prioritária. Ele permite que desenvolvedores tenham maior controle de seus ambientes, sem comprometer a segurança do sistema operacional.
Instalar Ubuntu 22.04
-
Instale Ubuntu 22.04.1 LTS
-
Edite ou crie o arquivo
/etc/wsl.conf:[boot] systemd=true [network] generateResolvConf=falsePara mais informações sobre o arquivo, veja Advanced settings configuration in WSL.
-
Após editar o arquivo, devemos desligar o WSL2 uma vez (isso pode ser executado no bash do WSL2 ou no cmd.exe/PowerShell do host):
wsl.exe --shutdownE então, volte ao terminal bash do WSL2 e siga as instruções abaixo.E então, volte ao terminal bash do WSL2 e siga as instruções abaixo.
-
Agora, crie o arquivo
/etc/resolv.confcom o seguinte conteúdo:nameserver 8.8.8.8
Configurações Git
Você pode compartilhar o gerenciador de credenciais do Git para Windows com o Git do WSL2:
git config --global credential.helper '/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager-core.exe' # customize for your own: git config --global user.email your.email.address@example.com git config --global user.name 'YOUR NAME'
Instale o Docker do repositório oficial do Docker
O documento é baseado em Install Docker Engine on Ubuntu.
-
Remova as coisas existentes, se houver
sudo apt remove docker docker-engine docker.io containerd runc -
Instale as dependências:
sudo apt update && sudo apt install -y ca-certificates curl gnupg lsb-release -
Adicione o repositório oficial do Docker:
sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null -
Instale o Docker e o plugin do Compose:
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
Executando Docker em Modo Rootless
-
Instale o
uidmappara gerenciar subuid/subgid:sudo apt install -y uidmap -
Desabilite o Docker com permissões de root:
sudo systemctl disable --now docker.service docker.socket wsl.exe --shutdown -
Instale o Docker rootless:
dockerd-rootless-setuptool.sh install -
Edite o arquivo
~/.bashrcpara configurar o Docker rootless:export PATH=/usr/bin:$PATH export DOCKER_HOST=unix://${XDG_RUNTIME_DIR}/docker.sock -
Carregue o
~/.bashrcpara a sessão atual:. ~/.bashrc -
Instalar extras (se necessário)
sudo apt install -y docker-ce-rootless-extras
Expondo Portas Privilegiadas (Opcional)
Se precisar executar serviços em portas privilegiadas (1-1024), execute:
sudo setcap cap_net_bind_service=ep $(which rootlesskit) systemctl --user restart docker
Referência tutorial original.