Containers 101
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ CONTAINER BASICS MATRIX โ
โ โ
โ [ Container = Aplicaรงรฃo + Dependรชncias + Runtime ] โ
โ โ
โ "Tudo que vocรช precisa, nada que vocรช nรฃo precisa" โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
O que é um Container? ๐ฆ
Um container é como uma cápsula auto-suficiente que contém:
Sua aplicação
Bibliotecas necessárias
Configurações
Runtime environment
โโโโโโโโโโโโโโโโโโโโโโโโ
โ Sua Aplicaรงรฃo โ
โโโโโโโโโโโโโโโโโโโโโโโโค
โ Dependรชncias โ
โโโโโโโโโโโโโโโโโโโโโโโโค
โ Runtime โ
โโโโโโโโโโโโโโโโโโโโโโโโ
Anatomia de um Container ๐ฌ
Componentes Principais
Namespace - Isolamento de processos
Cgroups - Controle de recursos
Union Filesystem - Sistema de arquivos em camadas
Container Runtime - Motor de execução
Por Que Usar Containers? ๐ค
Benefícios
Isolamento consistente
Portabilidade garantida
Deploy simplificado
Escalabilidade fácil
Versionamento eficiente
Waifu Tips ๐ก
Conceitos Fundamentais ๐
1. Imutabilidade
Containers não devem ser modificados em runtime
Mudanças através de novas builds
Tratados como gado, não como pets
2. Isolamento
โโโโโโโโโโโโโApp 1โโโโโโ โโโโโโโโโโโโโApp 2โโโโโโ
โ โโโโโโโโโโโโโโโโ โ โ โโโโโโโโโโโโโโโโ โ
โ โ Process โ โ โ โ Process โ โ
โ โโโโโโโโโโโโโโโโ โ โ โโโโโโโโโโโโโโโโ โ
โ โผ โ โ โผ โ
โ โโโโโโโโโโโโโโโโ โ โ โโโโโโโโโโโโโโโโ โ
โ โ Filesystem โ โ โ โ Filesystem โ โ
โ โโโโโโโโโโโโโโโโ โ โ โโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโ
3. Recursos Limitados
CPU controlada
Memória definida
I/O gerenciado
Network isolada
Primeiros Passos ๐ฃ
Hello World Container
# Rode seu primeiro container
docker run hello-world
# Veja o que estรก rodando
docker ps
# Veja todos os containers
docker ps -a
Container Interativo
# Ubuntu container interativo
docker run -it ubuntu bash
# Alpine container leve
docker run -it alpine sh
Container Lifecycle ๐
โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ
โ Created โ โโบ โ Running โ โโบ โ Stopped โ
โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ
โฒ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Comandos de Ciclo de Vida
# Criar container
docker create nginx
# Iniciar container
docker start <container-id>
# Parar container
docker stop <container-id>
# Remover container
docker rm <container-id>
Práticas Recomendadas ๐ฏ
DON'Ts โ
Não armazene dados no container
Evite containers muito grandes
Não use latest
tag
Não rode como root
Não ignore security scans
Exercícios Práticos ๐๏ธ
Hello Container
# Rode e entenda o hello-world
docker run hello-world
Container Persistente
# Rode nginx com porta exposta
docker run -d -p 8080:80 nginx
Container Exploração
# Entre em um container rodando
docker exec -it <container-id> bash
Debug Básico ๐
Comandos Essenciais
# Logs do container
docker logs <container-id>
# Processos rodando
docker top <container-id>
# Estatรญsticas de uso
docker stats <container-id>
Checkpoint โ
Você agora sabe:
[x] O que são containers
[x] Como eles funcionam
[x] Comandos básicos
[x] Boas práticas
[x] Ciclo de vida
Próximos Passos ๐ฏ
Explore Docker Hub
Crie seus próprios containers
Aprenda sobre networking
Estude volumes
Pratique com projetos reais
Deep Dive: Camadas de um Container ๐ง
Union File System
โโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Camada R/W โ <- Container Layer
โโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Aplicaรงรฃo โ <- Image Layer 3
โโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Dependรชncias โ <- Image Layer 2
โโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Sistema Base โ <- Image Layer 1
โโโโโโโโโโโโโโโโโโโโโโโโโโ
Como as Camadas Funcionam
Base Layer: Sistema operacional mínimo
Middleware Layer: Runtime, libs
Application Layer: Seu código
Container Layer: Mudanças em runtime
Networking Básico ๐
Tipos de Rede
# Lista redes disponรญveis
docker network ls
# Cria rede customizada
docker network create minha-rede
# Conecta container ร rede
docker network connect minha-rede container-id
Modelos de Rede
Bridge (default)
docker run --network bridge nginx
Host (usa rede do host)
docker run --network host nginx
None (sem rede)
docker run --network none nginx
Storage & Volumes ๐พ
Tipos de Storage
Volumes (gerenciado pelo Docker)
# Cria volume
docker volume create meu-volume
# Usa volume
docker run -v meu-volume:/data nginx
Bind Mounts (path do host)
# Monta diretรณrio local
docker run -v $(pwd):/app nginx
tmpfs (memória)
# Armazenamento temporรกrio
docker run --tmpfs /app nginx
Container Security ๐
Boas Práticas de Segurança
Rootless Containers
# No Dockerfile
USER non-root-user
Scan de Vulnerabilidades
# Scan de imagem
docker scan nginx:latest
Limites de Recursos
# Limita CPU e memรณria
docker run --cpus=.5 --memory=512m nginx
Advanced Commands ๐
Container Stats
# Stats em tempo real
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
# Info detalhada
docker inspect container-id
Batch Operations
# Para todos containers
docker stop $(docker ps -q)
# Remove containers parados
docker container prune
# Remove tudo
docker system prune -a
Troubleshooting Matrix ๐
Common Issues
Problema | Comando de Debug | Solução |
---|
Container não inicia | docker logs
| Verifique logs |
Porta em uso | docker port
| Mude a porta |
Sem espaço | docker system df
| Limpe recursos |
Debug Commands
# Histรณrico de comandos
docker history imagem:tag
# Eventos em tempo real
docker events
# Diff de alteraรงรตes
docker diff container-id
Container Development Workflow ๐
Local Development
Build Local
docker build -t app:dev .
Hot Reload
docker run -v $(pwd):/app app:dev
Debug Mode
docker run --rm -it app:dev sh
Multi-container Setup
# docker-compose.yml
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
db:
image: postgres
environment:
POSTGRES_PASSWORD: secret
Otimizações
Multi-stage Builds
FROM node:alpine AS builder
WORKDIR /app
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
Cache Optimization
COPY package*.json ./
RUN npm install
COPY . .
Resource Limits
docker run \
--cpus=2 \
--memory=2g \
--memory-reservation=1g \
--memory-swap=4g \
nginx
Waifu Advanced Tips ๐ฎ
Container Patterns ๐
Sidecar Pattern
โโโโโโโโโโโโโโโโโโโโโโ
โ Main Container โโโโโ
โโโโโโโโโโโโโโโโโโโโโโ โ
โ
โโโโโโโโโโโโโโโโโโโโโโ โ
โ Sidecar Container โโโโโ
โโโโโโโโโโโโโโโโโโโโโโ
Ambassador Pattern
โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ
โ Main Container โโโโโ Ambassador โ
โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ
Exercícios Avançados ๐๏ธโ๏ธ
Multi-container App
Custom Network
Configure rede bridge customizada
Conecte múltiplos containers
Teste comunicação entre containers
Resource Monitoring
Certificação Checkpoint ๐
Prepare-se para certificações Docker com estes conceitos:
Links Úteis ๐
Stateful vs Stateless ๐
Stateless Containers
โโโโโโโโโโโโโโโโโโโโโโ
โ Stateless App โ
โ โโโโโโโโโโโโโโโโ โ
โ โ Request โ โ
โ โ Process โโโโผโโบ Response
โ โ Response โ โ
โ โโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโ
No State โ
Exemplos de Uso
Web servers
API endpoints
Processamento de filas
Transformação de dados
Stateful Containers
โโโโโโโโโโโโโโโโโโโโโโ
โ Stateful App โ
โ โโโโโโโโโโโโโโโโ โ
โ โ Process โ โ
โ โโโโโโโโฌโโโโโโโโ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโ โ
โ โ State โ โ
โ โโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโ
Persistent โ
Características
Mantém dados entre restarts
Requer volumes persistentes
Mais complexo para escalar
Precisa de backup strategy
Exemplos de Uso
Databases
Cache systems
Message queues
Session stores
Containers vs VMs: Análise Detalhada ๐
Comparação de Arquitetura
โโโโโโโโโโContainersโโโโโโโโโโ โโโโโโโโโโโVMsโโโโโโโโโโโ
โ โโโโโโ โโโโโโ โโโโโโ โ โ โโโโโโ โโโโโโ โโโโโโ โ
โ โApp1โ โApp2โ โApp3โ โ โ โApp1โ โApp2โ โApp3โ โ
โ โโโโโโ โโโโโโ โโโโโโ โ โ โโโโโโ โโโโโโ โโโโโโ โ
โ Container Engine โ โ โโโโโโ โโโโโโ โโโโโโ โ
โ โ โ โ โ OS โ โ OS โ โ OS โ โ
โ Host Kernel โ โ โโโโโโ โโโโโโ โโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ Hypervisor โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
Matriz de Comparação
Aspecto | Containers | VMs |
---|
Boot Time | Segundos | Minutos |
Tamanho | MBs | GBs |
Performance | Próximo ao bare metal | Overhead significativo |
Isolamento | Processo-level | Hardware-level |
Portabilidade | Muito alta | Limitada |
Segurança | Compartilha kernel | Totalmente isolada |
Densidade | Alta (100s) | Baixa (10s) |
Use Cases Detalhados ๐ฏ
Ideal para Containers
Microserviços
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Microservices Architecture โ
โ โโโโโโ โโโโโโ โโโโโโ โโโโโโ โโโโโโ โ
โ โAPI โ โAuthโ โCartโ โUserโ โPay โ โ
โ โโโโโโ โโโโโโ โโโโโโ โโโโโโ โโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
CI/CD Pipelines
โโโโโโโ โโโโโโโโ โโโโโโโ โโโโโโโโ
โBuildโ โบ โTest โ โบ โStageโ โบ โDeployโ
โโโโโโโ โโโโโโโโ โโโโโโโ โโโโโโโโ
Desenvolvimento Local
โโโโโโโโโโโโโโโโโโโโโโ
โ Dev Environment โ
โ โโโโโโ โโโโโโโโโโ โ
โ โApp โ โDatabaseโ โ
โ โโโโโโ โโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโ
Ideal para VMs
Legacy Applications
โโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Monolithic App โ
โ โโโโโโโโโโโโโโโโโโโโ โ
โ โ Full Stack App โ โ
โ โ + Dependencies โ โ
โ โ + Full OS โ โ
โ โโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโ
Isolamento Completo
โโโโโโโโโโโโโโโโโโโโโโ
โ Secure VM โ
โ โโโโโโโโโโโโโโโโโ โ
โ โ Encrypted โ โ
โ โ Environment โ โ
โ โโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโ
Padrões de Deployment ๐
Blue-Green Deployment
โโโโโโโโโBlueโโโโโโโโ โโโโโโโโโGreenโโโโโโโ
โ Version 1.0 โ โ Version 1.1 โ
โ โโโโโโโโโโโโโโ โ โ โโโโโโโโโโโโโโ โ
โ โ Container โ โ โ โ Container โ โ
โ โโโโโโโโโโโโโโ โ โ โโโโโโโโโโโโโโ โ
โโโโโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโโโฌโโโโโโโโโ
โ โ
โโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโ
โ Load Balancer โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโ
โ
Traffic
Rolling Updates
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ V1 โ V1 โ V2 โ V2 โ
โโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโค
โ V1 โ V2 โ V2 โ V2 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Time โโโโโโโโโโโโโโโโโโโโโโโโบ
Estratégias de Persistência ๐พ
Volume Types
โโโโโโโโโโโโโโโโโโโโโโ
โ Container โ
โ โโโโโโโโโโโโโโโโ โ
โ โ Application โ โ
โ โโโโโโโโฌโโโโโโโโ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโ โ
โ โ Volume โโโโผโโโบ Host Storage
โ โโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโ
Named Volumes
docker volume create mydata
docker run -v mydata:/data nginx
Bind Mounts
docker run -v /host/path:/container/path nginx
tmpfs Mounts
docker run --tmpfs /tmp nginx
Networking Avançado ๐
Network Types
โโโโโโโโโโโโโโโโโโโโโโ
โ Container A โ
โ 172.17.0.2 โ
โโโโโโโโโโโโฌโโโโโโโโโโ
โ
โโโโโโโโโโโโดโโโโโโโโโโ
โ Docker Network โ
โ 172.17.0.0/16 โ
โโโโโโโโโโโโฌโโโโโโโโโโ
โ
โโโโโโโโโโโโดโโโโโโโโโโ
โ Container B โ
โ 172.17.0.3 โ
โโโโโโโโโโโโโโโโโโโโโโ
Network Modes
Bridge Network
Default network driver
Isolated network
Port mapping
Host Network
Uses host networking
Better performance
Less isolation
Overlay Network
Multi-host networking
Swarm mode
Service discovery
Monitoramento e Logging ๐
Monitoring Stack
โโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ
โ Container โ โ Prometheus โ
โ โโโโโโโโโโโโ โ โ Metrics DB โ
โ โ App โ โ โ โ
โ โ +Metrics โ โโโโโบโ โโโโโโโโโโโโ โ
โ โโโโโโโโโโโโ โ โ โ Grafana โ โ
โโโโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโ
Logging Patterns
Stdout/Stderr
docker logs container_id
Sidecar Logger
services:
app:
image: myapp
logger:
image: fluentd
volumes:
- /var/log:/logs
Waifu Tips ๐ฎ
Próximos Passos ๐ฏ
Explore Docker Hub
Crie seus próprios containers
Aprenda sobre networking
Estude volumes
Pratique com projetos reais
15 abril 2025