Docker compose, limites et réservations de ressources

Comment définir des limites et réservations de ressources CPU et RAM dans un fichier docker-compose pour éviter la surcharge des hôtes et renforcer la sécurité des conteneurs.

La gestion des ressources dans un serveur est primordiale, en plus de bien gérer les besoins, c’est aussi une façon de limiter les dégâts d’une cyberattaque. En déployant vos conteneurs, vous pouvez justement attribuer et limiter les ressources CPU et RAM.

Dans vos fichiers docker-compose, il est tout à fait possible de mettre des limites et des réservations de ressources pour un ou plusieurs conteneurs.

  • réserver des ressources = attribuer / assurer un nombre de ressources précis.
  • limiter des ressources = empêcher d’aller au-delà des ressources proposées

Ajouter ce bloc dans votre fichier docker-compose.yml, pour chaque service/conteneur que vous souhaitez :

yaml
services:
  mon-service:
    deploy:
      resources:
        limits:
          cpus: "0.15"
          memory: 128m
        reservations:
          cpus: "0.05"
          memory: 64M

Vous avez par ailleurs plusieurs choix :

  • mettre uniquement des limites
  • mettre uniquement des réservations
  • ajouter les deux (limites et réservations)

Les ressources mise en place via ce bloc sont restrictives, libre à vous d’affiner les options en fonction de votre situation et des besoins. Les limites “CPU” concernent l’allocation de processeur (cpu-ception). En bref, il s’agit de définir la quantité de ressource CPU qu’un conteneur peut prendre. cpus: '0.15' comme dans l’exemple stipule qu’un conteneur peut prendre au maximum 15% de ressources d’un seul CPU de la machine hôte. D’autres options existent, vis-à-vis du scheduling processor (ordonnancement) ou encore la quantité de cycle alloué… En soit, je laisse faire les processeurs et les OS qui seront bien meilleurs que moi dans ces affinités.

Enfin, lorsque votre fichier .yml est prêt, vous pourrez lancer la commande suivante pour démarrer vos conteneurs :

bash
docker compose up -d

Note : Depuis Docker compose v2, le bloc deploy.resources est pris en charge nativement sans l’option --compatibility. Si vous utilisez encore Docker Compose v1, l’option --compatibility reste nécessaire.

En lançant la commande docker stats, vous verrez tous vos conteneurs avec notamment leurs ressources utilisées en temps réel - la colonne “Memory” affichera les valeurs imposées dans votre fichier docker-compose quant aux limites et réservations de mémoire - vous n’aurez pas d’informations concernant les limitations et réservations côté CPU cependant…

Source

Restez informé

Abonnez-vous au flux RSS ou suivez pour les nouveaux articles.

Articles similaires

Aucune image
#conteneurs

Migration de conteneurs Docker d'un host à l'autre

Procédure de migration à froid de conteneurs Docker d'un serveur à l'autre, avec ou sans réseau personnalisé et pour des configurations mono ou multi docker-compose.

Lire l'article
Aucune image
#linux

Réimporter ses clés SSH, facile !

Comment réimporter ses paires de clés SSH après une réinstallation en recréant simplement le dossier ~/.ssh avec les bons droits.

Lire l'article

Derniers dans #docker

Aucune image

Mon homelab en 2024

Présentation de mon homelab version 2024 composé d'un Mac Mini M1, d'un MacBook Air M1 et de quatre Chuwi Larkbox X, avec Proxmox, Ceph et Kubernetes.

Lire l'article
Aucune image

Les conteneurs docker RapidFort

Qu'est-ce qu'un conteneur RapidFort ? Je vous explique ce qu'il en est, avec un comparatif et mon ressenti.

Lire l'article