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=false
Para 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 --shutdown
E 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.conf
com 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
uidmap
para 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
~/.bashrc
para configurar o Docker rootless:export PATH=/usr/bin:$PATH export DOCKER_HOST=unix://${XDG_RUNTIME_DIR}/docker.sock
-
Carregue o
~/.bashrc
para 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.