Comment utiliser la commande docker container update pour modifier les ressources d'un conteneur

DockerDockerBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce labo (LabEx), vous apprendrez à modifier dynamiquement les limites de ressources et la politique de redémarrage d'un conteneur Docker en cours d'exécution en utilisant la commande docker container update. Vous commencerez par créer un conteneur avec des limites initiales de CPU et de mémoire.

Après la création du conteneur, vous explorerez comment mettre à jour les parts de CPU (CPU shares) et la limite de mémoire pour ajuster l'allocation des ressources. Enfin, vous apprendrez à modifier la politique de redémarrage (restart policy) du conteneur, ce qui contrôle la manière dont Docker gère les redémarrages dans différents scénarios. Cette expérience pratique démontrera la flexibilité et la puissance de la gestion des ressources des conteneurs dans Docker.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/exec("Execute Command in Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/run -.-> lab-555127{{"Comment utiliser la commande docker container update pour modifier les ressources d'un conteneur"}} docker/rm -.-> lab-555127{{"Comment utiliser la commande docker container update pour modifier les ressources d'un conteneur"}} docker/exec -.-> lab-555127{{"Comment utiliser la commande docker container update pour modifier les ressources d'un conteneur"}} docker/inspect -.-> lab-555127{{"Comment utiliser la commande docker container update pour modifier les ressources d'un conteneur"}} docker/pull -.-> lab-555127{{"Comment utiliser la commande docker container update pour modifier les ressources d'un conteneur"}} end

Créer un conteneur avec des limites de ressources initiales

Dans cette étape, vous apprendrez à créer un conteneur Docker et à définir des limites initiales pour le CPU et la mémoire. Les limites de ressources sont importantes pour empêcher qu'un seul conteneur ne consomme toutes les ressources disponibles sur la machine hôte, ce qui pourrait affecter les performances des autres conteneurs et de l'hôte lui-même.

Commencez par télécharger l'image ubuntu depuis Docker Hub. Cette image servira de base pour notre conteneur.

docker pull ubuntu:latest

Vous devriez voir une sortie indiquant que l'image est en cours de téléchargement et d'extraction.

Maintenant, créons un conteneur nommé my-limited-container avec des limites de ressources spécifiques. Nous utiliserons la commande docker run avec les options --cpus et --memory.

L'option --cpus limite la quantité de ressources CPU que le conteneur peut utiliser. La valeur est un nombre à virgule flottante représentant le nombre de cœurs CPU. Par exemple, --cpus 0.5 signifie que le conteneur peut utiliser au maximum la moitié d'un cœur CPU.

L'option --memory limite la quantité de mémoire que le conteneur peut utiliser. La valeur peut être spécifiée en octets, kilo-octets (k), méga-octets (m) ou giga-octets (g). Par exemple, --memory 512m limite le conteneur à 512 méga-octets de mémoire.

Dans cet exemple, nous allons créer un conteneur qui exécute la commande sleep infinity, ce qui maintient le conteneur en fonctionnement indéfiniment. Nous limiterons son utilisation CPU à 0,5 cœur et sa mémoire à 256 méga-octets.

docker run -d --name my-limited-container --cpus 0.5 --memory 256m ubuntu:latest sleep infinity

Décomposons cette commande :

  • docker run : Cette commande permet de créer et démarrer un nouveau conteneur.
  • -d : Cette option exécute le conteneur en mode détaché, c'est-à-dire en arrière-plan.
  • --name my-limited-container : Attribue le nom my-limited-container au conteneur.
  • --cpus 0.5 : Limite l'utilisation CPU du conteneur à 0,5 cœur.
  • --memory 256m : Limite l'utilisation mémoire du conteneur à 256 méga-octets.
  • ubuntu:latest : Spécifie l'image Docker à utiliser (la dernière version d'Ubuntu).
  • sleep infinity : Commande exécutée à l'intérieur du conteneur. Elle maintient le conteneur en fonctionnement.

Après l'exécution de la commande, Docker affichera l'ID du conteneur.

Pour vérifier que le conteneur est en cours d'exécution et que les limites de ressources sont appliquées, vous pouvez utiliser la commande docker inspect. Cette commande fournit des informations détaillées sur un conteneur.

docker inspect my-limited-container

La sortie de docker inspect est un grand objet JSON. Vous pouvez rechercher les champs CpuShares et Memory dans la section HostConfig pour voir les limites appliquées. Notez que --cpus 0.5 est traduit en une valeur CpuShares de 512 (par défaut, 1 CPU correspond à 1024 parts). La valeur Memory sera exprimée en octets.

Mettre à jour les parts CPU d'un conteneur

Dans cette étape, vous apprendrez à modifier les parts CPU (CPU shares) d'un conteneur en cours d'exécution en utilisant la commande docker update. Les parts CPU permettent de prioriser l'accès aux cycles CPU lorsque le système est sous charge. Une valeur plus élevée signifie que le conteneur obtiendra une plus grande proportion de temps CPU par rapport aux conteneurs ayant des parts inférieures.

Lors de l'étape précédente, nous avons créé un conteneur nommé my-limited-container avec une limite CPU de 0,5 cœur, ce qui correspond à 512 parts CPU. Maintenant, mettons à jour ses parts CPU à 768. Cela lui donnera une priorité plus élevée pour les ressources CPU par rapport aux autres conteneurs ayant des parts par défaut (1024) ou inférieures.

Pour mettre à jour les parts CPU, nous utilisons la commande docker update avec l'option --cpu-shares, suivie du nom du conteneur et de la nouvelle valeur de parts.

docker update --cpu-shares 768 my-limited-container

Vous devriez voir le nom du conteneur s'afficher en sortie, ce qui confirme que la mise à jour a réussi.

Pour vérifier que les parts CPU ont bien été mises à jour, vous pouvez à nouveau utiliser la commande docker inspect et consulter le champ CpuShares dans la section HostConfig.

docker inspect my-limited-container

Recherchez le champ CpuShares dans la sortie. Sa valeur devrait maintenant être 768.

Il est important de noter que la mise à jour des parts CPU ne nécessite pas de redémarrer le conteneur. Les modifications sont appliquées dynamiquement au conteneur en cours d'exécution.

Mettre à jour la limite mémoire d'un conteneur

Dans cette étape, vous apprendrez à modifier la limite mémoire d'un conteneur en cours d'exécution en utilisant la commande docker update. Limiter l'utilisation mémoire est essentiel pour empêcher les conteneurs de consommer des quantités excessives de RAM, ce qui pourrait entraîner des problèmes de performance voire une instabilité du système hôte.

Lors de la première étape, nous avons créé le conteneur my-limited-container avec une limite mémoire de 256 mégaoctets. Maintenant, augmentons cette limite à 512 mégaoctets.

Pour mettre à jour la limite mémoire, nous utilisons la commande docker update avec l'option --memory, suivie du nom du conteneur et de la nouvelle valeur de limite mémoire.

docker update --memory 512m my-limited-container

Vous devriez voir le nom du conteneur s'afficher en sortie, confirmant que la mise à jour a réussi.

Pour vérifier que la limite mémoire a bien été mise à jour, vous pouvez utiliser la commande docker inspect et consulter le champ Memory dans la section HostConfig.

docker inspect my-limited-container

Recherchez le champ Memory dans la sortie. Sa valeur devrait maintenant être 536870912 (ce qui correspond à 512 mégaoctets en octets).

Comme pour la mise à jour des parts CPU, modifier la limite mémoire d'un conteneur en cours d'exécution ne nécessite pas de redémarrer le conteneur. Les modifications sont appliquées dynamiquement.

Mettre à jour la politique de redémarrage d'un conteneur

Dans cette étape, vous apprendrez à modifier la politique de redémarrage (restart policy) d'un conteneur en utilisant la commande docker update. La politique de redémarrage détermine le comportement d'un conteneur lorsqu'il s'arrête ou lorsque le démon Docker redémarre. Ceci est important pour assurer la disponibilité de vos applications exécutées dans des conteneurs.

Par défaut, les conteneurs ont une politique de redémarrage no, ce qui signifie qu'ils ne redémarreront pas automatiquement après s'être arrêtés. Mettons à jour my-limited-container pour qu'il ait une politique de redémarrage on-failure. Cette politique fera redémarrer le conteneur uniquement s'il s'arrête avec un code de sortie non nul (indiquant une erreur).

Pour mettre à jour la politique de redémarrage, nous utilisons la commande docker update avec l'option --restart, suivie du nom du conteneur et de la politique souhaitée.

docker update --restart on-failure my-limited-container

Vous devriez voir le nom du conteneur s'afficher en sortie, confirmant que la mise à jour a réussi.

Pour vérifier que la politique de redémarrage a bien été mise à jour, vous pouvez utiliser la commande docker inspect et consulter le champ RestartPolicy dans la section HostConfig.

docker inspect my-limited-container

Recherchez le champ RestartPolicy dans la sortie. Le champ Name dans RestartPolicy devrait maintenant être on-failure.

Les autres politiques de redémarrage courantes incluent :

  • no : Ne pas redémarrer automatiquement le conteneur
  • on-failure[:max-retries] : Redémarrer le conteneur uniquement s'il s'arrête avec un code d'erreur. Optionnellement limiter le nombre de tentatives
  • always : Toujours redémarrer le conteneur s'il s'arrête
  • unless-stopped : Toujours redémarrer le conteneur sauf s'il est explicitement arrêté

La mise à jour de la politique de redémarrage ne nécessite pas non plus de redémarrer le conteneur. Le changement est appliqué dynamiquement.

Enfin, nettoyons le conteneur que nous avons créé.

docker stop my-limited-container
docker rm my-limited-container

Ces commandes arrêtent et suppriment le conteneur.

Résumé

Dans ce lab, vous avez appris à gérer les ressources des conteneurs Docker en utilisant la commande docker update. Vous avez commencé par créer un conteneur avec des limites initiales de CPU et de mémoire en utilisant docker run avec les options --cpus et --memory. Cela a démontré comment définir des contraintes de ressources lors de la création d'un conteneur pour éviter l'épuisement des ressources sur l'hôte.

Ensuite, vous avez exploré comment modifier dynamiquement ces limites de ressources sur un conteneur en cours d'exécution. Vous avez appris à mettre à jour les parts CPU du conteneur avec docker update --cpu-shares et à ajuster la limite mémoire avec docker update --memory. Enfin, vous avez pratiqué la modification de la politique de redémarrage du conteneur en utilisant docker update --restart, illustrant ainsi comment contrôler le comportement du conteneur en cas d'échec. Ces étapes vous ont fourni une expérience pratique dans l'utilisation de la commande docker update pour affiner l'allocation des ressources et le comportement des conteneurs après leur création.