Fermer

juin 7, 2021

Docker Bootcamp – Limites de ressources


Bienvenue à Docker Bootcamp. Dans cet article, nous examinerons la définition des limites de ressources sur les conteneurs. Par défaut, les conteneurs ont un accès complet au processeur hôte et à la RAM, tout comme une application ordinaire installée et exécutée sur la machine hôte. Docker nous permet de contrôler la quantité de CPU et de RAM que chaque conteneur peut consommer. Plusieurs conteneurs fonctionneront ensemble pour partager le temps CPU inactif et la RAM disponible, il est donc important de prendre en compte les besoins de votre application et le matériel disponible sur l'hôte.

  • CPU Scheduler – Permet à un seul CPU de partager les ressources système entre plusieurs processus. . Il sélectionne un processus dans la file d'attente qui est prêt à être exécuté.
  • info – Afficher les informations du système Docker
  • run – Créer et démarrer un nouveau conteneur
  • stats – Afficher un live flux de statistiques d'utilisation des ressources du conteneur

Vous pouvez trouver une liste complète des commandes et de tous les indicateurs disponibles sur https://docs.docker.com/engine/reference/commandline/docker/.

info

info docker

run

docker run [options] image [command] [args…]
Sorties : ContainerID

–cpusO Spécifiez la quantité de processeurs disponibles qu'un conteneur peut utiliser (par rapport aux processeurs disponibles sur l'hôte)
  • 0,5 (équivalent à –cpu-period=”100000” –cpu-quota=”50000”)
  • 1.0 (équivalent à –cpu-period=”100000” –cpu-quota=”100000”)[19659017]1.5 (équivalent à –cpu-period=”100000” –cpu-quota=”150000”)
  • 2.0 (équivalent à –cpu-period=”100000” –cpu-quota=”200000”)
– cpuset-cpusOLimiter les cœurs de processeur disponibles pour un conteneur
  • Numéro unique (0 = premier cœur)
  • Plage (0-3 = quatre premiers cœurs)
  • Liste (1,3 = deuxième et quatrième cœurs)
–cpu-periodO[19659015] Utilisé avec cpu-quota pour configurer le planificateur cpu. Définit la période du planificateur.
–cpu-quotaOUtilisé avec cpu-period pour configurer le planificateur cpu. Définit la limite du planificateur par période.
–cpu-shares-cOCPU Shares (poids par rapport aux autres conteneurs)
  • La valeur par défaut est 1024
  • Un conteneur avec une valeur de partage de 682 aura deux fois la priorité du processeur en tant que conteneur avec une valeur de partage de 341
  • Utilisé uniquement lorsque les cycles du processeur sont contraints
–memory -mOLimite de mémoire
  • Un entier positif suivi d'un suffixe de taille (b, k, m, g pour byte, kilobyte, megabyte, gigabyte)
  • Une limite stricte qui ne peut pas être dépassée
  • Ce paramètre est interne à docker
  • Le conteneur ne saura pas qu'il a une limite

 

stats

docker stats [options] [container]

–all-aOAfficher tous les conteneurs (par défaut pour afficher uniquement les conteneurs en cours d'exécution)
–no-streamODésactiver les statistiques de streaming (afficher les résultats et exit)

 

Configuration

La première chose que nous voulons faire est de vérifier la configuration de notre système Docker afin de pouvoir valider que nos limites de ressources sont appliquées correctement. Ma machine de test a 3 processeurs et 8 Go de RAM.

  • Vérifier la configuration du docker
    • informations sur le docker
      • Notez les lignes pour les processeurs et la mémoire totale.

La mienne affiche 3 processeurs et 6,195 Go de RAM. Le démon Docker ne peut pas utiliser toute la RAM disponible sur le système et nous verrouiller hors de la machine hôte. Nous allons maintenant créer un conteneur sans limite de ressources pour nous assurer qu'il correspond à ce qui est disponible pour Docker.

  • Créer, démarrer et exécuter un conteneur interactif
    • docker run -it -name resourcebase busybox /bin/sh
  • Liste du nombre de processeurs disponibles
  • Liste de l'utilisation de la mémoire en Mo
    • libre -m
      • Listes 6344 Mo (6344/1024 = 6,195 Go)
  • Inspecter les détails du conteneur
    • docker inspecte la base de ressources
      • Sous HostConfig { CpuShares } vous pouvez voir une valeur de 0
      • Sous HostConfig { Memory } vous pouvez voir une valeur de 0
      • Sous HostConfig { NanoCpus } vous pouvez voir une valeur de 0
      • Sous HostConfig { CpusetCpus } vous pouvez voir une chaîne vide
  • Vérifier les statistiques
    • statistiques docker – pas de flux
      • Liste de la limite de mémoire de 6,195 Go

Vous pouvez voir que le conteneur de base dispose de l'intégralité du processeur et de la mémoire vive disponibles pour Docker.

CPU Limit

  • Créez, démarrez et exécutez un conteneur interactif avec un processeur limité
    • docker run -it -cpus="1.5" -name cpulimit busybox /bin/sh
      • Ce conteneur aura accès à tous les cœurs disponibles mais limité en temps de calcul
  • Liste du nombre de processeurs disponibles
  • Inspecter les détails du conteneur
    • docker inspecte cpulimit
      • Sous HostConfig { NanoCpus }, vous pouvez voir une valeur de 1500000000 (1,5 converti en nanosecondes)

Core Limit

  • Créer, démarrer et exécuter un conteneur interactif avec des cœurs limités
    • docker run -it –cpuset-cpus="1-2" –name corelimit busybox /bin/sh
      • Ce conteneur aura un accès complet aux deuxième et troisième cœurs
  • Liste du nombre de processeurs disponibles
  • Inspecter les détails du conteneur
    • docker inspecte corelimit
      • Sous HostConfig { CpusetCpus } vous pouvez voir une valeur 1-2

Memory Limit

  • Créer, démarrer et exécuter un conteneur interactif avec une mémoire limitée
    • docker run -it –memory="1g" –name memorylimit busybox /bin/sh
      • Ce conteneur aura 1 Go de RAM disponible
  • Liste de l'utilisation de la mémoire en Mo
    • libre -m
      • Listes 6344 Mo (6344/1024 = 6,195 Go)
      • La limite est un paramètre interne à docker
  • Inspecter les détails du conteneur
    • docker inspecte la limite de mémoire
      • Sous HostConfig { Memory }, vous pouvez voir une valeur de 1073741824 (1 Go)
  • Vérifier les statistiques
    • statistiques du docker
      • Liste de la limite de mémoire 1 Go
        • Laisser l'actualisation pour que nous puissions voir la mémoire se remplir
  • Utiliser le vérin disponible
    • queue /dev/zéro
      • Regardez les statistiques
      • Lorsque l'utilisation de la mémoire atteint 100 %, le processus est arrêté

Les limites de ressources sont un excellent moyen de diviser les ressources physiques de l'hôte et d'optimiser les performances du conteneur. Assurez-vous de donner à chaque conteneur suffisamment de ressources pour fonctionner à des niveaux raisonnables. Assurez-vous que l'hôte dispose de suffisamment de ressources pour exécuter tous les conteneurs requis.

N'oubliez pas de nettoyer votre espace de travail de conteneur et soyez prêt pour la prochaine leçon ! Jusqu'à la prochaine fois! Merci d'avoir lu !




Source link