Son aktivite 1 month ago

Docker aide limit cpu Ram compose.md Ham

📋 Docker Compose - Limitation CPU & RAM

📌 Méthodes Principales

1. Pour usage local (standalone)

services:
  mon-service:
    image: mon-image:latest
    # RAM
    mem_limit: 512M        # Maximum
    mem_reservation: 256M  # Minimum garanti
    memswap_limit: 1G      # RAM + swap
    # CPU
    cpus: '0.5'            # 50% d'un cœur

2. Pour Docker Swarm

services:
  mon-service:
    image: mon-image:latest
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 512M
        reservations:
          cpus: '0.25'
          memory: 256M

⚙️ Options détaillées

Mémoire (RAM)

Option Description Exemple
mem_limit Limite maximale de RAM 512M, 2G
mem_reservation Minimum garanti 256M, 1G
memswap_limit RAM + swap totale 1G, -1 (désactive swap)

CPU

Option Description Exemple
cpus Nombre/part de CPU '1.5', '0.5'
cpu_period + cpu_quota Contrôle fin period: 100000, quota: 50000 (50%)
cpuset Affinité CPU '0-1', '0,2'
cpu_shares Poids relatif 512 (50% poids normal)

💡 Exemple Complet

version: '3.8'
services:
  app:
    image: nginx:alpine
    container_name: mon-app
    
    # RAM
    mem_limit: 1G
    mem_reservation: 512M
    memswap_limit: 1.5G
    
    # CPU
    cpus: '0.75'
    cpu_shares: 768
    cpu_period: 100000
    cpu_quota: 75000
    
    # Optimisations
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 30s
      timeout: 10s
      retries: 3

🔧 Formules Utiles

Calcul CPU Quota

CPU % = (cpu_quota / cpu_period) * 100

Exemple : quota: 50000 ÷ period: 100000 = 50% CPU

Unités de mémoire

  • B = bytes
  • K = kilobytes (1000 bytes)
  • M = megabytes
  • G = gigabytes

🛠️ Commandes de vérification

# Voir l'utilisation en temps réel
docker stats

# Voir les limites d'un conteneur
docker inspect <container_id> | grep -i "memory\|cpu"

# Tester les limites
docker run --rm -it --cpus="0.5" --memory="512m" alpine:latest

⚠️ Bonnes pratiques

  1. Toujours définir des limites pour éviter la surconsommation
  2. Reservation < Limit pour éviter les conflits
  3. Adapter au hardware : ne pas allouer plus que la machine n'a
  4. Surveiller l'utilisation avec docker stats
  5. Penser au swap : memswap_limit contrôle RAM + swap totale

🎯 Récapitulatif rapide

Besoin Configuration
Limiter à 50% CPU cpus: '0.5'
Max 1GB RAM mem_limit: 1G
Garantir 256MB mem_reservation: 256M
Désactiver swap memswap_limit: -1
2 cœurs max cpuset: '0-1'

📚 Ressources


📝 À copier/coller dans votre fichier docker-compose.yml