GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment définir la mémoire Docker et la limite d'utilisation du processeur

Présentation

Par défaut, les conteneurs Docker ont accès à toutes les ressources RAM et CPU de l'hôte. Les laisser fonctionner avec ces paramètres par défaut peut entraîner des goulots d'étranglement au niveau des performances.

Si vous ne limitez pas l'utilisation de la mémoire et du processeur de Docker, Docker peut utiliser toutes les ressources système.

Dans ce didacticiel, découvrez comment limiter l'utilisation de la mémoire et du processeur des conteneurs Docker.

Configurer le système pour activer la limitation des ressources

Avant de pouvoir exécuter un conteneur avec des ressources limitées, vérifiez si votre système prend en charge cette option Docker. Ce guide vous montre comment procéder dans Ubuntu, ainsi que comment activer cette fonctionnalité si nécessaire.

1. Tout d'abord, exécutez la commande :

sudo docker info

Si vous recevez la sortie WARNING: No swap limit support , la limitation des ressources n'a pas été activée par défaut.

2. Pour ajouter cette option, modifiez le fichier de configuration grub. Ouvrez le fichier dans un éditeur de texte de votre choix (nous utilisons nano) :

sudo nano /etc/default/grub

3. Ajoutez ensuite la ligne suivante :

GRUB_CMDLINE_LINUX="cdgroup_enable=memory swapaccount=1"

4. Enregistrez les modifications et quittez le fichier.

5. Ensuite, mettez à jour la configuration grub avec la commande :

sudo update-grub

6. Enfin, redémarrez votre ordinateur pour que les modifications prennent effet.

7. Pour vérifier que vous avez activé avec succès la fonctionnalité Docker donnée en réexécutant les docker info commande.

Limiter l'accès à la mémoire du conteneur Docker

Il existe plusieurs limitations de RAM que vous pouvez définir pour un conteneur Docker. Certains d'entre eux incluent :

  • Configurer la quantité maximale de mémoire qu'un conteneur peut utiliser.
  • Définir la quantité de mémoire qu'un conteneur Docker peut permuter sur le disque.
  • Définition de la limite souple pour la quantité de mémoire attribuée à un conteneur.

Ci-dessous, découvrez comment configurer les limitations de mémoire Docker.

Définir l'accès maximal à la mémoire

Pour limiter la quantité maximale d'utilisation de la mémoire pour un conteneur, ajoutez le --memory l'option docker run commande. Alternativement, vous pouvez utiliser le raccourci -m .

Dans la commande, spécifiez la quantité de mémoire que vous souhaitez dédier à ce conteneur spécifique.

La commande doit suivre la syntaxe :

sudo docker run -it --memory="[memory_limit]" [docker_image]

La valeur de memory_limit doit être un entier positif suivi du suffixe b , k , m , ou g (abréviation d'octets, de kilo-octets, de mégaoctets ou de gigaoctets). Par exemple, pour limiter le conteneur à 1 Go de RAM, ajoutez --memory="1g" .

Par exemple, pour exécuter une instance d'un conteneur Ubuntu et définir la limite de mémoire à 1 Go, la commande est :

sudo docker run -it --memory="1g" ubuntu

Définir l'échange sur la limite de mémoire du disque

Utiliser le swap L'option vous permet de stocker des données même après que toute la RAM affectée au conteneur a été utilisée. Il le fait en ignorant la limitation de la mémoire et en écrivant directement sur le disque. Bien qu'il s'agisse d'une fonctionnalité utile, ce n'est pas une pratique recommandée car elle ralentit les performances.

Pour configurer cet espace RAM supplémentaire, définissez la quantité totale de mémoire d'échange. Avant de faire cela, vous devriez déjà avoir la mémoire maximale (--memory ) du jeu de mémoire non swap. Le swap inclut la quantité totale de mémoire non swap plus la quantité de mémoire d'échange réservé en tant que sauvegarde.

Par exemple, si vous définissez --memory à 1 Go , comme dans l'exemple ci-dessus, la quantité de mémoire d'échange doit être supérieure à cela. Pour exécuter un conteneur avec un élément supplémentaire 1 Go de mémoire d'échange, définissez la mémoire d'échange sur 2 Go .

La syntaxe pour exécuter un conteneur avec une mémoire limitée et une mémoire d'échange supplémentaire est :

sudo docker run -it --memory="[memory_limit]" --memory-swap="[memory_limit]" [docker_image]

Par exemple, pour exécuter un conteneur à partir de l'image Ubuntu, en attribuant 1 Go de RAM au conteneur à utiliser et en réservant 1 Go de RAM pour la mémoire d'échange, tapez :

sudo docker run -it --memory="1g" --memory-swap="2g" ubuntu

Définir la limite logicielle sur la mémoire du conteneur

Limiter l'utilisation de la mémoire d'un conteneur avec --memory fixe essentiellement une limite stricte qui ne peut être dépassée. Vous pouvez également définir une limite souple (--memory-reservation ) qui avertit lorsque le conteneur atteint la fin de sa mémoire assignée mais n'arrête aucun de ses services.

Si --memory les limitations ne sont pas définies, définissez la limite souple avec --memory-reservation ne limite pas complètement l'espace du conteneur. Si les deux fonctionnalités sont activées, la limite souple est toujours inférieure à la capacité d'espace maximale.

Par exemple, pour qu'un conteneur Ubuntu ait la réservation de mémoire de 750 Mo et la capacité maximale de RAM de 1 BG , utilisez la commande :

sudo docker run -it --memory="1g" --memory-reservation="750m" ubuntu

Limiter l'utilisation du processeur du conteneur Docker

Tout comme l'utilisation de la RAM, les conteneurs Docker n'ont aucune limitation par défaut pour le processeur de l'hôte. Donner aux conteneurs une utilisation illimitée du processeur peut entraîner des problèmes.

Il existe plusieurs façons de définir la quantité de ressources CPU de la machine hôte que vous souhaitez affecter aux conteneurs.

Par exemple, si vous avez un hôte avec 2 CPU et que vous souhaitez donner à un conteneur l'accès à l'un d'eux, utilisez l'option --cpus="1.0" . La commande pour exécuter un conteneur Ubuntu avec accès à 1 CPU serait :

sudo docker run -it --cpus="1.0" ubuntu

Vous pouvez également utiliser le --cpu-shares option pour donner au conteneur une proportion plus ou moins importante de cycles CPU. Par défaut, il est défini sur 1024 .

Pour exécuter un conteneur avec moins de parts de CPU, exécutez :

sudo docker run -it --cpus-shares="700" ubuntu

Pour trouver plus d'options pour limiter l'utilisation du CPU du conteneur, veuillez vous référer à la documentation officielle de Docker.


Ubuntu
  1. Comment limiter l'utilisation du processeur d'un processus sous Linux

  2. Comment trouver les principaux processus en cours d'exécution par utilisation de la mémoire et du processeur

  3. Comment les pipelines limitent-ils l'utilisation de la mémoire ?

  4. Récupérer l'utilisation du processeur et l'utilisation de la mémoire d'un seul processus sous Linux ?

  5. Limiter la mémoire et le processeur avec lxc-execute

Comment limiter l'utilisation du processeur avec CPULimit sur Ubuntu Linux

Comment augmenter la mémoire et le processeur sur une machine vagabonde

Comment trouver les 10 principaux processus en cours d'exécution par utilisation de la mémoire et du processeur

Comment trouver les principaux processus en cours d'exécution par utilisation de la mémoire et du processeur sous Linux

Limite de mémoire et limite de processeur dans le conteneur Docker

En quoi le temps CPU et l'utilisation du CPU sont-ils identiques ?