📊 Cap 13: Docker Essencial
Ferramentas do Desenvolvedor • Multi-Stage Builds, Caching & Segurança de Containers
🗺️ Máquinas Virtuais vs Containers
flowchart TD
subgraph VM ["Máquina Virtual Tradicional (Pesada)"]
V1["App ➔ SO Convidado Completo (GBs) ➔ Hypervisor ➔ Hardware 🚨"]
end
subgraph CONTAINER ["Container Docker (Leve)"]
C1["App ➔ Isolamento de Processos (Namespaces/Cgroups) ➔ Kernel Host ⚡"]
end
VM --- CONTAINER
style VM fill:#ffebee,stroke:#d32f2f,stroke-width:2px
style CONTAINER fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
🎯 Slide 1: A Regra do Cache de Camadas
-
Cada instrução
RUN,COPY,ADDcria uma nova camada imutável. - Ordem Correta:
COPY package.jsonourequirements.txtRUN npm installoupip install(Fica em cache!)COPY . .(Código muda frequentemente, mas não invalida as dependências!)
🎯 Slide 2: Multi-Stage Builds: Imagens de 15MB
-
Não leve o compilador Go/Rust ou o SDK do Node para a imagem de produção!
- Use Multi-Stage:
- Estágio 1: Compila tudo.
- Estágio 2: Cria imagem do zero (
scratchoudistroless) e copia apenas o executável final!
🎯 Slide 3: Segurança: Nunca Rode como Root!
-
Containers rodando como
rootsão alvos fáceis para invasões de escape de kernel. - Sempre defina:
RUN useradd -u 1001 appuserUSER appuser- Bloqueie privilégios administrativos dentro do container!
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim