Container Resources Management π
Resource Limits Overview π―
Basic Resource Types
ββββββββββββββββββββββ
β CPU β
β Memory β
β I/O β
β Network Bandwidth β
ββββββββββββββββββββββ
CPU Management β‘
CPU Limits
# Limitar CPUs
docker run --cpus=2 nginx
# Definir CPU shares
docker run --cpu-shares=512 nginx
# Especificar CPUs especΓficas
docker run --cpuset-cpus="0,2" nginx
CPU Quotas
version: '3.8'
services:
app:
deploy:
resources:
limits:
cpus: '0.50'
reservations:
cpus: '0.25'
Memory Management πΎ
Memory Limits
# Limite de memΓ³ria
docker run --memory=512m nginx
# Limite de swap
docker run --memory-swap=1g nginx
# Reserva de memΓ³ria
docker run --memory-reservation=256m nginx
Memory Settings Matrix
Parâmetro | Descrição | Exemplo |
---|---|---|
--memory | Limite máximo | --memory=1g |
--memory-swap | Limite swap | --memory-swap=2g |
--memory-reservation | Reserva soft | --memory-reservation=512m |
--kernel-memory | Memória kernel | --kernel-memory=256m |
Storage Management π½
Storage Options
# Limitar escrita
docker run --device-write-bps /dev/sda:1mb nginx
# Limitar leitura
docker run --device-read-bps /dev/sda:1mb nginx
# Limitar IOPS
docker run --device-write-iops /dev/sda:100 nginx
Storage Quotas
services:
db:
volumes:
- data:/var/lib/mysql
deploy:
resources:
limits:
storage: 5G
Network Management π
Network Controls
# Limitar banda
docker run --network-bandwidth=100mb nginx
# QoS settings
docker run --network-qos=high nginx
Monitoring Resources π
Resource Usage
# Stats em tempo real
docker stats
# Format especΓfico
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"
# Batch monitoring
docker stats --no-stream
Resource Metrics
# MΓ©tricas detalhadas
docker container inspect container_id
# Logs de recursos
docker logs --details container_id
Resource Optimization π§
Best Practices
β Defina limites realistas
β Monitore uso constante
β Use reservations
β Configure alertas
β Otimize regularmente
Anti-Patterns
β Sem limites definidos
β Overcommit recursos
β Ignorar métricas
β Configuração genérica
β Negligenciar monitoramento
Resource Templates π
Development Template
resources:
limits:
cpu: 0.5
memory: 512M
reservations:
cpu: 0.1
memory: 128M
Production Template
resources:
limits:
cpu: 2
memory: 2G
reservations:
cpu: 1
memory: 1G
Troubleshooting Guide π
Common Issues
OOM Kills
# Verificar logs dmesg | grep -i kill # Aumentar limite docker update --memory 1g container_idCPU Throttling
# Verificar throttling docker stats --no-stream --format "{{.CPUPerc}}" # Ajustar limite docker update --cpus 2 container_id
Waifu Resource Tips π‘
Quick Reference π
Resource Commands
# CPU
--cpus=<value>
--cpu-shares=<value>
--cpuset-cpus=<value>
# Memory
--memory=<value>
--memory-swap=<value>
--memory-reservation=<value>
# Storage
--device-write-bps=<value>
--device-read-bps=<value>
# Network
--network-bandwidth=<value>
Monitoring Commands
# Basic monitoring
docker stats
# Detailed info
docker inspect
# Resource update
docker update
Next Steps π―
16 abril 2025