🐳 Cap 13: Docker Essencial - Exemplos Práticos
Demonstrações práticas de Dockerfiles multi-stage, otimização de imagens e gerenciamento de volumes.
🗺️ Isolamento de Kernel Linux com Namespaces e Cgroups
flowchart TD
KERNEL["Kernel Linux do Host (Único)"]
KERNEL --> C1["Container 1 (PID Namespace, Net Namespace, Memory Cgroup 512MB)"]
KERNEL --> C2["Container 2 (Isolado de Arquivos, Processos e Redes)"]
KERNEL --> C3["Container 3 (Executa com UID 1000 não-privilegiado) ⚡"]
style KERNEL fill:#ede7f6,stroke:#512da8,stroke-width:2px
style C1 fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
style C2 fill:#fff3e0,stroke:#ff9800,stroke-width:1.5px
style C3 fill:#00897b,stroke:#004d40,stroke-width:2px,color:#ffffff
📄 Exemplo 1: Gerenciamento de Volumes Persistentes no Terminal
# 1. Criar volume nomeado:
docker volume create postgres_data
# 2. Executar PostgreSQL com persistência garantida:
docker run -d \
--name meu-postgres \
-e POSTGRES_PASSWORD=SenhaForte123! \
-e POSTGRES_DB=devdb \
-v postgres_data:/var/lib/postgresql/data \
-p 5432:5432 \
postgres:16-alpine
# 3. Remover container sem perder os dados do banco:
docker rm -f meu-postgres
# Os dados continuam intactos dentro do volume 'postgres_data'!
📄 Exemplo 2: Limpeza e Manutenção de Disco do Docker
# Remover todos os containers parados, redes não utilizadas e imagens órfãs (dangling):
docker system prune -f
# Limpeza profunda incluindo volumes não utilizados (cuidado!):
docker system prune --volumes -f