Learn Docker Help

Melhores PrÑticas Docker: O Caminho do Mestre 🎯

╔═══════════════════════════════════════════════════════════╗ β•‘ DOCKER BEST PRACTICES MATRIX β•‘ β•‘ β•‘ β•‘ Security ◄────► Performance ◄────► Maintainability β•‘ β•‘ β–² β–² β–² β•‘ β•‘ β”‚ β”‚ β”‚ β•‘ β•‘ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β•‘ β•‘ DevOps Flow β•‘ β•‘ β•‘ β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

Dockerfile Best Practices πŸ“

Otimização de Imagens

# βœ… Multi-stage build FROM node:alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build FROM nginx:alpine COPY --from=builder /app/dist /usr/share/nginx/html

Layer Optimization

# βœ… Combine RUN commands RUN apt-get update && \ apt-get install -y \ package1 \ package2 && \ rm -rf /var/lib/apt/lists/* # ❌ Avoid multiple RUN commands RUN apt-get update RUN apt-get install package1 RUN apt-get install package2

Security Guidelines πŸ”’

Container Hardening

# βœ… Use non-root user FROM alpine RUN adduser -D appuser USER appuser # βœ… Read-only root filesystem docker run --read-only nginx

Secrets Management

# βœ… Use Docker secrets docker secret create app_secret secret.txt docker service create \ --secret app_secret \ myapp # ❌ Avoid environment variables for secrets docker run -e "API_KEY=secret" myapp

Performance Optimization πŸš€

Resource Management

# βœ… Set resource limits docker run \ --cpus=".5" \ --memory="512m" \ --memory-swap="1g" \ nginx

Networking

# βœ… Use user-defined networks docker network create --driver overlay mynet # βœ… Enable DNS caching docker run --dns-opt="ndots:1" nginx

Development Workflow πŸ’»

Docker Compose

# βœ… docker-compose.yml version: '3.8' services: app: build: context: . target: development volumes: - .:/app - /app/node_modules environment: - NODE_ENV=development

Testing

# βœ… Dedicated test container docker-compose -f docker-compose.test.yml up

Production Deployment 🌟

Health Checks

# βœ… Add HEALTHCHECK HEALTHCHECK --interval=30s --timeout=3s \ CMD curl -f http://localhost/ || exit 1

Logging

# βœ… Configure logging docker run \ --log-driver json-file \ --log-opt max-size=10m \ --log-opt max-file=3 \ nginx

CI/CD Integration πŸ”„

Build Pipeline

# βœ… GitHub Actions example name: Docker Build on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Build and test run: | docker build -t myapp:test . docker run myapp:test npm test

Monitoring & Maintenance πŸ“Š

Container Health

# βœ… Regular health checks docker inspect --format='{{.State.Health.Status}}' container_name # βœ… Resource monitoring docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"

DO's and DON'Ts Matrix ✨

DO's βœ…

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 1. Use multi-stage builds β”‚ β”‚ 2. Set resource limits β”‚ β”‚ 3. Implement health checks β”‚ β”‚ 4. Use .dockerignore β”‚ β”‚ 5. Version control images β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

DON'Ts ❌

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 1. Run as root β”‚ β”‚ 2. Store secrets in images β”‚ β”‚ 3. Use latest tag β”‚ β”‚ 4. Ignore security scans β”‚ β”‚ 5. Skip health checks β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Waifu Best Practice Tips πŸ’‘

Checklist de Qualidade βœ…

Antes do Deploy

  1. [ ] Imagem otimizada

  2. [ ] Security scan realizado

  3. [ ] Resources limits definidos

  4. [ ] Health checks implementados

  5. [ ] Logs configurados

  6. [ ] Backups planejados

  7. [ ] Monitoring setup

Troubleshooting Guide πŸ”§

Common Issues

# βœ… Debug container docker logs container_name # βœ… Interactive debug docker exec -it container_name sh # βœ… Network debug docker network inspect bridge

Próximos Passos 🎯

  1. Laboratório Prático

  2. Guia de Troubleshooting

  3. Certificação Docker

15 abril 2025