Docker-compose - limites et réservations de ressources

Tut's Linux juil. 29, 2020

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 cyber-attaque.
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 :

---
    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 proccesseur (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 docker-compose --compatibility up -d pour démarrer vos conteneurs. --compatibility permet de lancer les conteneurs malgré l'avertissement de docker, vous spécifiant que le bloc "deploy: ressources:" est à exploiter plutôt dans un docker-swarm que dans un hôte docker tout seul.

En lançant la commande docker stats, vous verrez tous vos conteneurs avec notamment leur 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

Mots clés

Julien HOMMET

Bercé par l'informatique depuis mon plus jeune âge, je transforme ma passion en expertise.

--}}
Super ! Vous vous êtes inscrit avec succès.
Super ! Effectuez le paiement pour obtenir l'accès complet.
Bon retour parmi nous ! Vous vous êtes connecté avec succès.
Parfait ! Votre compte est entièrement activé, vous avez désormais accès à tout le contenu.