GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Conteneurs vs machines virtuelles (VM) :quelle est la différence ?

Présentation

Les deux machines virtuelles et conteneurs sont utilisés pour créer des environnements virtuels isolés pour développer et tester des applications ou des logiciels. La question est de savoir comment ils diffèrent.

Cet article examine les deux concepts pour aider à comprendre la différence entre un conteneur et une machine virtuelle. Il définit les conteneurs et les machines virtuelles séparément, ainsi que côte à côte, pour voir ce qui les distingue les uns des autres.

Que sont les machines virtuelles (VM) ?

Une machine virtuelle (VM) est un système d'exploitation qui partage les ressources physiques d'un serveur. C'est un invité sur le matériel de l'hôte, c'est pourquoi on l'appelle aussi une machine invitée .

Plusieurs couches composent une machine virtuelle. La couche qui permet la virtualisation est l'hyperviseur . Un hyperviseur est un logiciel qui virtualise le serveur.

Comment fonctionne une machine virtuelle

Tout ce qui est nécessaire pour exécuter une application est contenu dans la machine virtuelle :le matériel virtualisé, un système d'exploitation et tous les fichiers binaires et bibliothèques requis. Par conséquent, les machines virtuelles ont leur propre infrastructure et sont autonomes.

Chaque machine virtuelle est complètement isolée du système d'exploitation hôte. De plus, il nécessite son propre système d'exploitation, qui peut être différent du système d'exploitation de l'hôte. Chacun a ses propres fichiers binaires, bibliothèques et applications.

Moniteur de machine virtuelle (VMM) :un autre nom pour l'hyperviseur

Machine hôte :le matériel sur lequel la VM est installée

Invité machine :un autre nom pour la VM

Machine virtuelle :AVANTAGES

Les machines virtuelles réduisent les dépenses . Au lieu d'exécuter une application sur un seul serveur, une machine virtuelle permet d'utiliser une ressource physique pour faire le travail de plusieurs. Par conséquent, vous n'avez pas à acheter, entretenir et stocker d'innombrables piles de serveurs.

Parce qu'il n'y a qu'une seule machine hôte, cela vous permet de gérer efficacement tous les environnements virtuels avec la puissance centralisée de l'hyperviseur. Ces systèmes sont entièrement séparés les uns des autres, ce qui signifie que vous pouvez installer plusieurs environnements système .

Plus important encore, une machine virtuelle est isolée du système d'exploitation hôte et constitue un coffre lieu d'expérimentation et de développement d'applications.

Machine virtuelle :CONTRE

Les machines virtuelles peuvent consommer beaucoup de ressources système de la machine hôte, d'une taille de plusieurs Go. Exécuter une seule application sur un serveur virtuel signifie exécuter une copie d'un système d'exploitation ainsi qu'une copie virtuelle de tout le matériel nécessaire au fonctionnement du système. Cela s'ajoute rapidement à beaucoup de cycles de RAM et de CPU.

Le processus de déplacement d'une application s'exécutant sur une machine virtuelle peut également être compliqué car il est toujours attaché au système d'exploitation. Par conséquent, vous devez migrer l'application ainsi que le système d'exploitation avec elle. De plus, lors de la création d'une machine virtuelle, l'hyperviseur alloue des ressources matérielles dédiées à la VM.

Une machine virtuelle utilise rarement toutes les ressources disponibles, ce qui peut rendre la planification et la distribution difficiles. Cela reste économique par rapport à l'exécution d'ordinateurs réels séparés.

Fournisseurs de VM populaires :

  • VMware vSphere
  • VirtualBox
  • Zen
  • Hyper-V
  • KVM

Qu'est-ce qu'un conteneur ?

Un conteneur est un environnement qui exécute une application qui ne dépend pas du système d'exploitation. Il isole l'application de l'hôte en la virtualisant. Cela permet aux utilisateurs de créer plusieurs charges de travail sur une seule instance de système d'exploitation.

Le noyau du système d'exploitation hôte répond aux besoins d'exécution de différentes fonctions d'une application, séparées en conteneurs. Chaque conteneur exécute des tâches isolées. Il ne peut pas endommager la machine hôte ni entrer en conflit avec d'autres applications exécutées dans des conteneurs séparés.

Comment fonctionnent les conteneurs ?

Lorsque vous travaillez à l'intérieur d'un conteneur, vous pouvez créer un modèle d'environnement dont vous avez besoin. Le conteneur exécute essentiellement un instantané du système à un moment donné, assurant la cohérence du comportement d'une application.

Le conteneur partage le noyau de l'hôte pour exécuter toutes les applications individuelles dans le conteneur. Les seuls éléments requis par chaque conteneur sont les bacs, les bibliothèques et les autres composants d'exécution.

Conteneur :PROS

Les conteneurs peuvent être aussi petits que 10 Mo et vous pouvez facilement limiter leur utilisation de la mémoire et du processeur. Cela rend les conteneurs remarquablement légers et lancement rapide par opposition au déploiement de machines virtuelles, où l'ensemble du système d'exploitation doit être déployé.
En raison de leur taille, vous pouvez rapidement évoluer dans et hors des conteneurs et ajouter des conteneurs identiques.

De plus, les conteneurs sont excellents pour l'intégration continue et le déploiement continu (CI/CD). Ils favorisent le développement collaboratif en distribuant et en fusionnant des images entre les développeurs.

Conteneur :CONS

Un conteneur utilise le noyau du système d'exploitation hôte et a des dépendances de système d'exploitation. Par conséquent, les conteneurs peuvent différer du système d'exploitation sous-jacent par dépendance, mais pas par type. Le noyau de l'hôte limite l'utilisation d'autres systèmes d'exploitation .

Les conteneurs n'offrent toujours pas la même sécurité et stabilité que les machines virtuelles peuvent. Puisqu'ils partagent le noyau de l'hôte, ils ne peuvent pas être aussi isolés qu'une machine virtuelle. Par conséquent, les conteneurs sont isolés au niveau du processus et un conteneur peut affecter les autres en compromettant la stabilité du noyau.

De plus, une fois qu'un conteneur a effectué sa tâche, il s'arrête, supprimant toutes les données qu'il contient. Si vous souhaitez que les données restent sur le serveur hôte, vous devez les enregistrer à l'aide de Data Volumes. Cela nécessite une configuration et un provisionnement manuels sur l'hôte.

Fournisseurs de conteneurs populaires :

  • Docker
  • AWS
  • LXD
  • Conteneurs Java
  • Conteneurs Hyper-V
  • Conteneurs Windows Server

Comment choisir les VM par rapport aux conteneurs

La décision d'opter pour des machines virtuelles ou des conteneurs dépend du travail que vous souhaitez que votre environnement virtuel effectue.

Les machines virtuelles sont une meilleure solution si vous devez :

  1. Gérer une variété de systèmes d'exploitation
  2. Gérer plusieurs applications sur un seul serveur
  3. Exécuter une application nécessitant toutes les ressources et fonctionnalités d'un système d'exploitation
  4. Assurer une isolation et une sécurité complètes

Les conteneurs conviennent si vous devez :

  1. Optimiser le nombre d'applications exécutées sur un serveur
  2. Déployer plusieurs instances d'une même application
  3. Disposer d'un système léger qui démarre rapidement
  4. Développer une application qui s'exécute sur n'importe quelle infrastructure sous-jacente

Les machines virtuelles sont couramment utilisées pour les applications exigeantes, l'infrastructure réseau et les applications qui consomment la plupart des ressources de la VM.

Les conteneurs sont couramment utilisés pour Web, applications et services de mise en cache, démons réseau et petites bases de données.


Ubuntu
  1. Comment supprimer des machines virtuelles basées sur KVM sur Redhat Linux

  2. Quelle est la différence entre les conteneurs LXC, LXD et Docker

  3. Quelle est la différence entre les méthodes Tasksel et normales ?

  4. Comment accéder à Internet à partir d'une machine virtuelle dans les boîtes Gnome ?

  5. Hébergement cloud vs hébergement VPS :quelle est la différence ?

Basculement Vs. Restauration :quelle est la différence ?

Comment trouver l'adresse IP d'une machine virtuelle KVM

Comment créer une machine virtuelle dans KVM sur la ligne de commande

Comment créer des machines virtuelles dans KVM à l'aide de Virt-Manager

Comment installer des machines virtuelles optimisées et configurées pour l'environnement Red Hat Virtualization

Comment migrer des machines virtuelles d'un hôte à un autre dans l'environnement de virtualisation Red Hat