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
–cpus | O | Spécifiez la quantité de processeurs disponibles qu'un conteneur peut utiliser (par rapport aux processeurs disponibles sur l'hôte)
| |
– cpuset-cpus | O | Limiter les cœurs de processeur disponibles pour un conteneur
| |
–cpu-period | O[19659015] Utilisé avec cpu-quota pour configurer le planificateur cpu. Définit la période du planificateur. | ||
–cpu-quota | O | Utilisé avec cpu-period pour configurer le planificateur cpu. Définit la limite du planificateur par période. | |
–cpu-shares | -c | O | CPU Shares (poids par rapport aux autres conteneurs)
|
–memory | -m | O | Limite de mémoire
|
stats
docker stats [options] [container]
–all | -a | O | Afficher tous les conteneurs (par défaut pour afficher uniquement les conteneurs en cours d'exécution) |
–no-stream | O | Dé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.
- informations sur le docker
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)
- libre -m
- 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
- docker inspecte la base de ressources
- Vérifier les statistiques
- statistiques docker – pas de flux
- Liste de la limite de mémoire de 6,195 Go
- statistiques docker – pas de flux
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
- docker run -it -cpus="1.5" -name cpulimit busybox /bin/sh
- 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)
- docker inspecte cpulimit
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
- docker run -it –cpuset-cpus="1-2" –name corelimit busybox /bin/sh
- 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
- docker inspecte corelimit
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
- docker run -it –memory="1g" –name memorylimit busybox /bin/sh
- 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
- libre -m
- 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)
- docker inspecte la limite de mémoire
- 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
- Liste de la limite de mémoire 1 Go
- statistiques du docker
- 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é
- queue /dev/zéro
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