Différences : 1. La vitesse de création de la virtualisation traditionnelle est très lente, tandis que la vitesse de création de la virtualisation des conteneurs est très rapide ; 2. La virtualisation traditionnelle ajoute des maillons à la chaîne d'ajustement du système et entraîne une perte de performances, tandis que la virtualisation des conteneurs a un noyau commun. et n'a presque aucune perte de performances ; 3. La virtualisation traditionnelle prend en charge plusieurs systèmes d'exploitation, tandis que la virtualisation de conteneurs ne prend en charge que les systèmes d'exploitation pris en charge par le noyau.
L'environnement d'exploitation de ce tutoriel : système linux7.3, version docker-1.13.1, ordinateur Dell G3.
Technologie de virtualisation traditionnelle
La virtualisation fait référence à la virtualisation d'un ordinateur en plusieurs ordinateurs logiques grâce à la technologie de virtualisation. Plusieurs ordinateurs logiques peuvent être exécutés simultanément sur un ordinateur. Chaque ordinateur logique peut exécuter un système d'exploitation différent et les applications peuvent s'exécuter dans des espaces indépendants sans s'affecter les unes les autres, améliorant ainsi considérablement l'efficacité du travail de l'ordinateur.
Avec le développement continu des fabricants de matériel, de nombreuses instructions dans la machine virtuelle n'ont pas besoin de passer par la couche matérielle virtuelle vers la couche matérielle réelle. Les fabricants de matériel prennent en charge des instructions pratiques pour faire fonctionner le matériel directement dans la machine virtuelle. Appelé Il s'agit d'une virtualisation assistée par matériel. Par rapport à la couche matérielle de virtualisation logicielle, ce type de virtualisation assistée par matériel n'a pas besoin de simuler tout le matériel. Certaines instructions sont directement exécutées sur la machine virtuelle pour faire fonctionner le matériel. ratio La virtualisation traditionnelle est plus élevée.
Virtualisation au niveau du système
Caractéristiques:
Pas besoin de simuler la couche matérielle.
Partage du noyau du même hôte
La différence entre la virtualisation traditionnelle et la virtualisation de conteneurs
Technologie de base de Container
1.CGroup limite l'utilisation des ressources des conteneurs
2.Mécanisme d'espace de noms pour réaliser l'isolation entre les conteneurs
3.chroot, isolation du système de fichiers.
CGroup:
Noyau Linux Fournit des restrictions, des enregistrements et isolation des ressources utilisées par les groupes de processus. Proposé par les ingénieurs de Google, l'arrière-plan est intégré au noyau. Le contrôle et l'enregistrement des différentes utilisations des ressources sont réalisés via différents sous-systèmes
/sys/fs/cgroup
Namespace:
pid : Le conteneur a son propre processus indépendant. table et fil de discussion n°1.
net : Le conteneur a ses propres informations réseau indépendantes
ipc : Lors de la communication ipc, des informations supplémentaires doivent être ajoutées pour identifier le processus
mnt : Chaque conteneur a son propre montage de répertoire unique
utc : Chaque conteneur a un nom d'hôte et un domaine indépendants
chroot :
Un répertoire dans l'hôte est le répertoire racine du conteneur.
Toutes les applications ont leurs propres dépendances, y compris des ressources logicielles et matérielles. Docker est une plate-forme ouverte pour les développeurs qui isole les dépendances en regroupant chaque application dans un conteneur. Les conteneurs sont comme des machines virtuelles légères pouvant s'adapter à des milliers de nœuds, contribuant ainsi à augmenter la portabilité du cloud en exécutant la même application dans différents environnements virtuels. Les machines virtuelles sont largement utilisées dans le cloud computing pour obtenir l'isolation et le contrôle des ressources grâce à l'utilisation de machines virtuelles. La machine virtuelle embarque un système d'exploitation complet avec sa propre gestion de mémoire, rendant les applications plus efficaces et sécurisées tout en assurant leur haute disponibilité.
Quelle est la différence entre les conteneurs Docker et les machines virtuelles ?
La machine virtuelle dispose d'un système d'exploitation complet et sa propre gestion de la mémoire est prise en charge via des périphériques virtuels associés. Dans une machine virtuelle, des ressources efficaces sont allouées au système d'exploitation de l'utilisateur et à l'hyperviseur, permettant à plusieurs instances d'un ou plusieurs systèmes d'exploitation de s'exécuter en parallèle sur un seul ordinateur (ou hôte). Chaque système d'exploitation invité s'exécute comme une entité unique au sein du système hôte.
D'autre part, les conteneurs Docker sont exécutés à l'aide du moteur Docker plutôt qu'un hyperviseur. Les conteneurs sont donc plus petits que les machines virtuelles et peuvent démarrer plus rapidement grâce au partage du noyau hôte, avec de meilleures performances, moins d'isolation et une meilleure compatibilité. Les conteneurs Docker sont capables de partager un noyau et des bibliothèques d'applications, de sorte que les conteneurs ont une surcharge système inférieure à celle des machines virtuelles. Tant que les utilisateurs sont prêts à utiliser une plate-forme unique pour fournir un système d'exploitation partagé, les conteneurs peuvent être plus rapides et utiliser moins de ressources. La création et le démarrage d'une machine virtuelle peuvent prendre quelques minutes, tandis que la création et le démarrage d'un conteneur peuvent prendre quelques secondes seulement. Les applications contenues dans des conteneurs offrent des performances supérieures à celles exécutées dans des machines virtuelles.
L'un des indicateurs clés indiquant que les conteneurs Docker sont plus faibles que les machines virtuelles est « l'isolement ». Les technologies Intel VT-d et VT-x fournissent une technologie d'isolation matérielle ring-1 pour les machines virtuelles, afin que les machines virtuelles puissent en tirer pleinement parti. Il aide les machines virtuelles à utiliser efficacement les ressources et à éviter les interférences les unes avec les autres. Les conteneurs Docker ne disposent également d’aucune forme d’isolation matérielle, ce qui les rend vulnérables aux attaques.
Comment choisir ?
Le choix entre conteneurs ou machines virtuelles dépend de la manière dont l'application est conçue. Si l'application est conçue pour offrir une évolutivité et une haute disponibilité, les conteneurs constituent le meilleur choix, sinon l'application peut être placée dans une machine virtuelle. Pour les entreprises ayant des exigences d'E/S élevées, telles que les services de base de données, il est recommandé de déployer Docker + des machines physiques, car lorsque Docker est déployé dans une machine virtuelle, les performances d'E/S seront limitées par la machine virtuelle. Pour les entreprises telles que les services de bureau virtuel qui mettent l'accent sur les autorisations et la sécurité des locataires, il est recommandé d'utiliser des machines virtuelles. La fonctionnalité d'isolation forte multi-tenant des machines virtuelles garantit que même si les locataires disposent des autorisations root sur la machine virtuelle, les autres locataires et hôtes sont en sécurité. .
Ou une meilleure option est une solution hybride, avec des conteneurs exécutés sur des machines virtuelles. Les conteneurs Docker peuvent s'exécuter à l'intérieur de machines virtuelles et leur fournir une isolation, des propriétés de sécurité, une mobilité, un réseau virtuel dynamique éprouvés, etc. Afin d'obtenir une isolation sûre et une utilisation élevée des ressources, nous devons essentiellement suivre l'idée d'utiliser l'isolation des machines virtuelles pour les opérations commerciales de différents locataires et déployer des types d'entreprises similaires sur le même ensemble de conteneurs.
Conclusion
Les conteneurs Docker deviennent un outil important dans les environnements DevOps. Il existe de nombreux cas d'utilisation des conteneurs Docker dans le monde DevOps. Exécuter des applications sur des conteneurs Docker et les déployer n'importe où (Cloud ou sur site ou n'importe quelle version de Linux) est désormais une réalité.
Fonctionnant dans des environnements hétérogènes, les machines virtuelles offrent un haut degré de flexibilité, tandis que les conteneurs Docker se concentrent principalement sur les applications et leurs dépendances. Les conteneurs Docker permettent un portage facile des piles d'applications entre les cloud en utilisant l'environnement de machine virtuelle de chaque cloud pour gérer les cloud. Cela représente une fonctionnalité utile qui, sans Docker Containers, devrait être implémentée de manière plus complexe et fastidieuse. Ce qui est expliqué ici ne consiste pas à abandonner les machines virtuelles, mais à utiliser des conteneurs Docker en fonction des conditions réelles en plus des machines virtuelles lorsque cela est nécessaire. On ne pense pas que les conteneurs Docker puissent éliminer complètement les machines virtuelles.
Apprentissage recommandé : "Tutoriel vidéo Docker"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!