Fermer

octobre 10, 2022

Docker Bootcamp – Modes d’isolation des conteneurs


Bon retour à Camp d’entraînement Docker. Dans le post précédent, nous avons appris les performances et comment régler nos conteneurs. Dans cet article, nous examinerons une autre façon d’améliorer les performances de vos conteneurs en utilisant le mode d’isolation des processus. Par défaut, les conteneurs Windows s’exécutent en mode hyper-v. Lorsque nous exécutons nos conteneurs en mode hyper-v, ils s’exécutent en fait dans une machine virtuelle hyper-v spécialisée. Cela augmente la compatibilité des images que nous pouvons exécuter et maintient les conteneurs séparés de l’hôte et des autres conteneurs. Lorsque nous exécutons nos conteneurs en mode d’isolation de processus, ils s’exécutent en tant que processus directement sur l’hôte. Le mode d’isolation de processus augmente les performances, mais il est plus strict en ce qui concerne la version du système d’exploitation hôte et les images pouvant être exécutées. Vous pouvez exécuter des conteneurs dans les deux modes en même temps sur le même hôte.

Commandes

  • tirer – Extraire une image d’un référentiel
  • Cours – Créer et démarrer un nouveau conteneur
  • Statistiques – Afficher un flux en direct des statistiques d’utilisation des ressources du conteneur

Détails de la commande

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

tirer

docker tirer [options] [registryhost/][username/]Nom[:tag]

–toutes les balises-unOTélécharger toutes les images étiquetées dans le référentiel nommé

Cours

course de docker [options] image [command] [args…]

-isolationODéfinir le mode d’isolation pour le conteneur
  • hyperv – Exécute le conteneur en mode d’isolation hyper-v (par défaut)
  • process – Exécute le conteneur en mode d’isolation de processus

Statistiques

statistiques de docker [container]

Exemples

Ma machine locale exécute Windows 10 20H2. Vous pouvez trouver votre version de Windows en cliquant avec le bouton droit sur le menu Démarrer et en cliquant sur système. Pour exécuter ces exemples, vous pouvez trouver une version de l’image principale du serveur Windows qui correspond à votre machine locale https://mcr.microsoft.com/v2/windows/servercore/tags/list.

Docker Bootcamp 17 Version Windows

    • Exécuter un conteneur en mode d’isolation hyper-v
      • docker run -it –isolation=hyperv –name sc20h2H mcr.microsoft.com/windows/servercore:20H2 powershell.exe
    • Exécuter un conteneur en mode d’isolation de processus
      • docker run -it –isolation=process –name sc20h2P mcr.microsoft.com/windows/servercore:20h2 powershell.exe
    • Afficher les statistiques des conteneurs pour comparer les détails
    • Exécuter une commande à l’intérieur du conteneur

Si la version du conteneur que vous essayez d’exécuter en mode d’isolation de processus ne correspond pas à votre hôte, vous obtiendrez une erreur « Le système d’exploitation du conteneur ne correspond pas au système d’exploitation hôte ».

Docker Bootcamp 17 Process Isolation Version non prise en charge

Si la version du conteneur que vous essayez d’exécuter dans l’un ou l’autre des modes est plus récente que celle de votre hôte, vous obtiendrez une erreur « Aucun manifeste correspondant pour XXX dans les entrées de la liste des manifestes ».

Docker Bootcamp 17 ne peut pas extraire les versions ultérieures de Windows

Sur mon local, vous pouvez voir la différence dans la quantité de CPU et de mémoire des conteneurs dans chaque configuration. Le conteneur en mode d’isolation de processus utilise moins de ressources car il s’exécute en tant que processus sur l’hôte au lieu de s’exécuter à l’intérieur d’une machine virtuelle hyper-v. Le conteneur d’isolation de processus utilise 81 % de mémoire en moins que le conteneur d’isolation hyper-v !

Processus Docker Bootcamp 17 Server Core Hyperv Vs

J’ai testé trois autres versions de conteneurs Windows et j’ai trouvé des économies de mémoire similaires.

ImageUtilisation de la mémoire (Hyper-V)Utilisation de la mémoire (isolation de processus)Différence en pourcentage
Nanoserveur : ltsc2022246 Mo29 Mo88%
Serveur : ltsc2022536 Mo71 Mo86%
Noyau de serveur : ltsc2022400 Mo45 Mo88%

Il est important de noter qu’un conteneur exécuté en mode d’isolation de processus expose son processus en cours d’exécution à l’hôte. Lorsque vous exécutez la commande ping sur le conteneur d’isolation de processus, vous verrez PING.EXE répertorié dans le gestionnaire de ressources de l’hôte. Cela signifie que les conteneurs exécutés en mode d’isolation de processus sont potentiellement moins sécurisés.

Commande de processus Docker Bootcamp 17 visible pour l'hôte

Les conteneurs Hyper-v sont plus sécurisés car ils sont isolés des autres conteneurs ainsi que de l’hôte.

Utilisation dans le monde réel

J’ai testé la différence entre l’isolation hyper-v et l’isolation de processus dans un exemple réel. Les résultats ont été encore plus perceptibles au niveau des performances de ma machine et de mes conteneurs. J’ai créé deux machines virtuelles identiques (à l’exception de la version Windows). Ils avaient tous les deux 1 processeur logique avec 4 cœurs et 32 ​​Go de RAM attribués. Au moment du test, une seule machine virtuelle fonctionnait sur mon hôte. J’ai utilisé un vrai projet Sitecore 10 qui exécute plusieurs conteneurs à la fois. Les résultats étaient massivement différents!

Isolation Hyper-V

Docker Bootcamp 17 Isolation Hyperv A
Docker Bootcamp 17 Isolation Hyperv B

L’utilisation du processeur est restée à près de 100 %. Le processus vmmem qui gère la mémoire des machines virtuelles hyper-v est hors normes ! 27 % du processeur pour exécuter le conteneur Sitecore CM. L’utilisation globale de la mémoire était de 20,3 Go. C’était si difficile d’utiliser ma machine. Ne parlons même pas de ce qui s’est passé lorsque j’ai ouvert Visual Studio ou construit la solution !

Isolation de processus

Docker Bootcamp 17 Processus d'isolement A

Docker Bootcamp 17 Processus d'isolation B

L’utilisation du processeur a augmenté au fur et à mesure que je naviguais sur le site, mais l’utilisation moyenne était beaucoup plus faible et était stable autour de 30% lorsque le site était idole. Le conteneur Sitecore CM fonctionnait à 8% du processeur beaucoup plus raisonnable. L’utilisation globale de la mémoire était de 9,7 Go. La machine était bien meilleure à utiliser, plus réactive et pouvait exécuter facilement Visual Studio.

Dernières pensées

Vous pouvez considérablement augmenter les performances de vos conteneurs en les exécutant en mode d’isolation de processus. Assurez-vous qu’il n’y a aucun problème de sécurité avant de le faire et qu’il existe une image qui correspond à la version de votre système d’exploitation hôte. S’il n’y a pas d’image pour la version la plus récente de Windows, vous devrez peut-être reporter la mise à niveau de votre ordinateur hôte (qui présente ses propres risques de sécurité).






Source link

octobre 10, 2022