Docker em dev é fácil. Produção exige segurança, monitoramento, logging e disaster recovery. Checklist completo para não errar.
Conceitos Principais
Security Hardening
Non-root user, read-only filesystem, secrets via Vault. Scan de vulnerabilidades. Network segmentation. Drop capabilities desnecessárias.
Resource Limits
Memory limit evita OOM kill. CPU limit evita um container matar outros. Disk quotas. Monitoring de uso.
Logging
Stdout/stderr para logs. Driver de log (json-file, syslog, fluentd). Centralização (ELK, Loki). Rotação de logs.
Health Checks
HEALTHCHECK no Dockerfile. Readiness/liveness em K8s. Restart policy correto. Alertas de unhealthy containers.
Passo a Passo
- Segurança: Scan Imagens: Trivy:
trivy image app:latest. Snyk: integra CI/CD. Clair: on-premise. Zero vulnerabilidades HIGH/CRITICAL antes de deploy. - Segurança: Runtime: AppArmor ou SELinux profiles. Seccomp filter syscalls.
--read-only, tmpfs para /tmp. Drop capabilities:--cap-drop=ALL --cap-add=NET_BIND_SERVICE. - Resource Limits: Docker:
--memory=512m --cpus=1. K8s: resources requests/limits no YAML. Monitorar com cAdvisor ou Prometheus. - Logging Centralizado: Fluentd sidecar coleta logs. Envia para Elasticsearch. Kibana para visualização. Retention policy 30 dias.
- Backup & DR: Volumes: backup diário para S3. Images: registry com replicação. Secrets: backup encrypted. Teste restore mensalmente.
Boas Praticas
Recomendacoes
• Imagens Alpine ou Distroless
• Multi-stage builds obrigatórios
• CI/CD com security gates
• Secrets nunca em env vars (use Vault)
• Monitoring 24/7 com alertas
• Disaster recovery testado regularmente
Erros Comuns
Evite estes erros
• Rodar como root
• Não limitar recursos
• Logs apenas locais
• Sem health checks
• Latest tag em produção
Checklist
- Imagens scaneadas (0 critical)
- User non-root configurado
- Resource limits definidos
- Logging centralizado ativo
- Health checks implementados
- Backup automático funcionando
- Secrets em Vault/similar
- Monitoring com alertas
- Disaster recovery testado