Back to blog

WSL2 com Docker Rootless

3 min de leitura
650 palavras

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

  1. Instale Ubuntu 22.04.1 LTS

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

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

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

  1. Remova as coisas existentes, se houver

    sudo apt remove docker docker-engine docker.io containerd runc
  2. Instale as dependências:

    sudo apt update && sudo apt install -y ca-certificates curl gnupg lsb-release
  3. 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
    
  4. 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

  1. Instale o uidmap para gerenciar subuid/subgid:

    sudo apt install -y uidmap
    
  2. Desabilite o Docker com permissões de root:

    sudo systemctl disable --now docker.service docker.socket
    wsl.exe --shutdown
  3. Instale o Docker rootless:

    dockerd-rootless-setuptool.sh install
    
  4. Edite o arquivo ~/.bashrc para configurar o Docker rootless:

    export PATH=/usr/bin:$PATH
    export DOCKER_HOST=unix://${XDG_RUNTIME_DIR}/docker.sock
    
  5. Carregue o ~/.bashrc para a sessão atual:

    . ~/.bashrc
    
  6. 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.