🪟 Docker no Windows com WSL2
O WSL2 (Windows Subsystem for Linux 2) permite rodar Docker com performance nativa no Windows, sem precisar de VM separada.
Habilitar WSL2 no Windows
Abra o PowerShell como Administrador e execute:
# Instalar WSL com Ubuntu (padrão)
wsl --install
# Ou especificar Ubuntu 22.04
wsl --install -d Ubuntu-22.04
# Verificar versão do WSL
wsl --version
Garantir que o WSL2 está ativo
# Listar distribuições instaladas e versão do WSL
wsl --list --verbose
# Saída esperada:
# NAME STATE VERSION
# * Ubuntu-22.04 Running 2 ← precisa ser versão 2
# Se estiver na versão 1, converter:
wsl --set-version Ubuntu-22.04 2
# Definir WSL2 como padrão para novas distros:
wsl --set-default-version 2
Instalar Docker Desktop
Baixe o Docker Desktop para Windows em docker.com/products/docker-desktop
Durante a instalação, certifique-se de marcar:
- ✅ Use WSL 2 instead of Hyper-V
- ✅ Add shortcut to desktop
Integrar Docker Desktop com WSL2
No Docker Desktop, vá em Settings → Resources → WSL Integration e ative a integração com sua distro Ubuntu:
# Após ativar, abra o terminal Ubuntu (WSL) e teste:
docker --version
# Docker version 27.x.x, build xxxxxxx
docker compose version
# Docker Compose version v2.x.x
Verificar instalação
# No terminal Ubuntu (WSL2):
docker run hello-world
🔧 Problemas Comuns no WSL2
O Docker Desktop não está rodando. Abra o Docker Desktop no Windows e aguarde o ícone ficar verde na bandeja do sistema.
Baixe e instale o pacote de atualização do kernel WSL2 em: aka.ms/wsl2kernel
Mantenha os arquivos do projeto dentro do sistema de arquivos Linux (
~/projetos/), não na pasta Windows (/mnt/c/). A performance cai drasticamente ao acessar arquivos Windows pelo WSL.
🐧 Docker no Ubuntu Linux
Instalação via repositório oficial do Docker — mais atualizado que o pacote padrão do Ubuntu.
sudo apt install docker.io — esse pacote é desatualizado. Use o repositório oficial abaixo.Remover versões antigas (se houver)
sudo apt remove docker docker-engine docker.io containerd runc 2>/dev/null
sudo apt autoremove -y
Instalar dependências e adicionar repositório oficial
# Atualizar e instalar dependências
sudo apt update
sudo apt install -y ca-certificates curl gnupg
# Adicionar chave GPG oficial do Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Adicionar repositório
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Instalar Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
Rodar Docker sem sudo (recomendado)
Por padrão, o Docker requer sudo. Para usar sem:
# Adicionar seu usuário ao grupo docker
sudo usermod -aG docker $USER
# Aplicar sem precisar fazer logout
newgrp docker
Iniciar e habilitar o serviço
# Iniciar Docker agora
sudo systemctl start docker
# Habilitar para iniciar com o sistema
sudo systemctl enable docker
# Verificar status
sudo systemctl status docker
Verificar instalação
docker --version
docker compose version
docker run hello-world
🔧 Problemas Comuns no Ubuntu
Execute
newgrp docker ou faça logout/login após adicionar seu usuário ao grupo docker.
O serviço não está rodando. Execute:
sudo systemctl start docker
🧪 Testes Práticos
Com o Docker instalado, execute estes testes para validar o ambiente:
Teste 1 — Servidor Web Nginx
Sobe um servidor web em segundos e acessa pelo navegador:
docker run -d -p 8080:80 --name teste-nginx nginx
# Acesse: http://localhost:8080
# Deve aparecer a página padrão do Nginx
# Remover ao terminar
docker stop teste-nginx && docker rm teste-nginx
Teste 2 — Banco de Dados PostgreSQL
Sobe um banco de dados completo sem instalar nada no sistema:
docker run -d \
--name teste-postgres \
-e POSTGRES_PASSWORD=minhasenha \
-e POSTGRES_DB=testdb \
-p 5432:5432 \
postgres:15
# Conectar ao banco via psql dentro do container
docker exec -it teste-postgres psql -U postgres -d testdb
# Dentro do psql:
# CREATE TABLE usuarios (id SERIAL, nome TEXT);
# INSERT INTO usuarios (nome) VALUES ('AegisCloud');
# SELECT * FROM usuarios;
# \q (para sair)
# Remover ao terminar
docker stop teste-postgres && docker rm teste-postgres
Teste 3 — Stack Completa com Docker Compose
Crie um arquivo docker-compose.yml e suba uma stack com app + banco:
# Criar pasta de teste
mkdir ~/teste-compose && cd ~/teste-compose
# Criar docker-compose.yml
cat > docker-compose.yml << 'EOF'
services:
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: senha123
POSTGRES_DB: appdb
volumes:
- dados:/var/lib/postgresql/data
adminer:
image: adminer
ports:
- "8081:8080"
depends_on:
- db
volumes:
dados:
EOF
# Subir a stack
docker compose up -d
# Acesse: http://localhost:8081
# Sistema: PostgreSQL | Servidor: db | Usuário: postgres | Senha: senha123
# Derrubar tudo
docker compose down -v
