Learn Docker Help

Docker Optimization Guide πŸš€

Image Optimization πŸ“¦

Multi-stage Builds

# Build stage FROM node:18-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # Production stage FROM node:18-alpine COPY --from=builder /app/dist ./dist RUN npm ci --only=production CMD ["node", "dist/main.js"]

Layer Optimization

# βœ… Combine commands RUN apt-get update && \ apt-get install -y \ curl \ nginx \ postgresql-client && \ rm -rf /var/lib/apt/lists/* # βœ… Use .dockerignore node_modules npm-debug.log Dockerfile .git .env

Runtime Optimization ⚑

Resource Limits

version: '3.8' services: app: deploy: resources: limits: cpus: '0.50' memory: 512M reservations: memory: 256M

Container Settings

# Otimizar garbage collector docker run -e "GOGC=100" app # Tuning JVM docker run \ -e "JAVA_OPTS=-XX:+UseG1GC -XX:MaxRAMPercentage=75" \ java-app

Storage Optimization πŸ’Ύ

Volume Performance

# tmpfs para dados temporΓ‘rios docker run \ --tmpfs /tmp:rw,noexec,nosuid,size=1g \ nginx # Volume otimizado docker volume create --driver local \ --opt type=ext4 \ --opt device=/dev/sda1 \ fast-storage

I/O Tuning

services: db: volumes: - data:/var/lib/postgresql/data blkio_config: weight: 1000 device_read_bps: - path: /dev/sda rate: '100mb'

Network Optimization 🌐

DNS Settings

# DNS otimizado docker run \ --dns 8.8.8.8 \ --dns-search example.com \ nginx

Network Mode

# Host networking para performance docker run --network host nginx # Container networking otimizado docker run \ --network-alias=fastnet \ --dns=8.8.8.8 \ nginx

Build Optimization πŸ—οΈ

BuildKit Features

# Habilitar BuildKit export DOCKER_BUILDKIT=1 # Build paralelo docker buildx build \ --platform linux/amd64,linux/arm64 \ --push .

Cache Strategies

# βœ… Otimizar cache COPY package*.json ./ RUN npm ci COPY . . # Cache em registry docker buildx build \ --cache-from type=registry,ref=user/app:cache \ --cache-to type=registry,ref=user/app:cache \ .

Memory Optimization 🧠

Memory Management

# Limites de memΓ³ria docker run \ --memory="512m" \ --memory-swap="1g" \ --memory-reservation="256m" \ nginx # OOM settings docker run \ --oom-kill-disable \ --memory="1g" \ nginx

CPU Optimization πŸ’»

CPU Allocation

# CPU limits docker run \ --cpus=".5" \ --cpu-shares=512 \ nginx # CPU pinning docker run \ --cpuset-cpus="0,1" \ nginx

Optimization Checklist βœ…

Build Time

  1. [x] Multi-stage builds

  2. [x] Layer optimization

  3. [x] .dockerignore

  4. [x] BuildKit enabled

  5. [x] Cache strategies

Runtime

  1. [x] Resource limits

  2. [x] Volume optimization

  3. [x] Network tuning

  4. [x] Memory management

  5. [x] CPU allocation

Monitoring & Metrics πŸ“Š

Performance Metrics

# Container stats docker stats --no-stream --format \ "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}" # I/O metrics docker stats --format \ "table {{.Container}}\t{{.BlockIO}}\t{{.NetIO}}"

Best Practices Matrix πŸ“‹

Área

Otimização

Impacto

Build

Multi-stage

Redução de tamanho

Runtime

Resource limits

Estabilidade

Storage

Volume drivers

I/O Performance

Network

Host networking

Latência reduzida

Waifu Optimization Tips πŸ’«

Quick Reference πŸ“š

Common Optimizations

# Build otimizado DOCKER_BUILDKIT=1 docker build --no-cache . # Runtime otimizado docker run \ --cpus=2 \ --memory=2g \ --network host \ app # Storage otimizado docker volume create --driver local \ --opt type=tmpfs \ --opt device=tmpfs \ --opt o=size=1g \ fast-volume
16 abril 2025