Docker et machines virtuelles
La virtualisation des ressources matérielles physiques est l'une des tendances les plus prometteuses du 21e siècle. Il existe un accord tacite sur le fait que l’informatique moderne doit dépasser les limites du matériel physique.
En tant que deux des solutions de ressources virtuelles les plus populaires sur le marché, Docker et machines virtuelles (VM) ont joué un rôle déterminant dans la transition vers une gestion des ressources virtualisées.
Cependant, de nombreuses personnes ne savent pas quel choix choisir. Selon à qui vous demandez, Docker et les machines virtuelles ont chacun leurs propres avantages. Dans cet article, nous allons examiner le débat entre Docker et les machines virtuelles pour voir quels avantages chacun peut apporter à votre organisation.
Contenu [ cacher ]
- Qu’est-ce que Docker ?
- Qu'est-ce qu'une machine virtuelle ?
- Pourquoi dois-je utiliser Docker ?
- Pourquoi ai-je besoin d’une machine virtuelle ?
- Docker et machines virtuelles face à face
- Performance
- Gestion
- Portabilité
- Sécurité
- Point de défaillance unique : hyperviseur
- Coût
- Lequel dois-je utiliser et quand ?
- Cas d'utilisation
- Docker vs machines virtuelles : mieux ensemble
- FAQ Docker et VM
- Quelles sont les différences entre une image VM et une image Docker ?
- Qu'est-ce qui est le plus sécurisé, une image de machine virtuelle ou une image Docker ?
- Puis-je exécuter Docker sur une VM ?
Qu’est-ce que Docker ?
Dockerest un outil open source quiutilise des conteneurs pour créer,déployer, etgérer les applications distribuées. Les développeurs utilisent des conteneurs pour créer des packages pour les applications qui incluent tous les composants de base (comme les bibliothèques) nécessaires à l'exécution de l'application de manière isolée. Déconnecter le conteneur de la machine sur laquelle il s'exécute garantit que l'application s'exécutera même si les utilisateurs exécutent des paramètres personnalisés sur leur machine Linux et permet de minimiser l'utilisation des ressources informatiques.
Depuis sa sortie en 2014, Docker a acquis un statut acclamé par la critique. De nombreuses organisations choisissent d'utiliser Docker plutôt que des machines virtuelles en raison des avantages en termes de performances qu'il offre. Aujourd'hui, des entreprises comme Visa et PayPal ont déployé Docker pour les aider à gérer leurs applications.
Qu'est-ce qu'une machine virtuelle ?
UNla machine virtuelle est un fichier(souvent appelé unhyperviseur) qui agit comme un ordinateur physique. Une machine virtuelleutilise les ressources physiques de l'appareil sur lequel il fonctionne pour répliquer l'environnement d'un appareil physique. Comme tout autre programme, la machine virtuelle possède sa propre fenêtre sur votre appareil. Vous pouvez exécuter plusieurs machines virtuelles sur un seul appareil.
Même si une machine virtuelle utilise les ressources de l’ordinateur pour fonctionner, elle fournit en réalité son propre matériel virtuel. Le matériel virtuel d'une machine virtuelle comprendCPU,mémoire,disques durs, etInterfaces réseau. Pour que l'ordinateur reste efficace, ce matériel virtuel est ensuite mappé au matériel physique du périphérique.
Les machines virtuelles sont isolées du système du périphérique physique et fonctionnent dans unbac à sable. En d’autres termes, une machine virtuelle est entièrement autonome. Cela les rend idéaux pour créer des sauvegardes et exécuter des logiciels. Les produits les plus populaires sur le marché sontVMwareetBoîte Virtuelle.
Pourquoi dois-je utiliser Docker ?
L'une des principales raisons pour lesquelles les entreprises utilisent Docker est comme alternative aux machines virtuelles. Docker est utilisé comme alternative car il estplus légeren termes de ressources que les machines virtuelles. Les conteneurs partagent des systèmes d'exploitation tandis que les machines virtuelles sont conçues pour émuler du matériel virtuel. En partageant les systèmes d'exploitation, les applications Docker peuvent s'exécuter en consommant une fraction des ressources d'une machine virtuelle.
Docker utilise le moteur Docker qui réside sur une instance Linux plutôt que les machines virtuelles gourmandes en ressources utilisées par les machines virtuelles. Cette structure signifie que les conteneurs Docker ont le potentiel degérer plus de cinq fois le nombre d'instances d'applications serveur que vous pourriez obtenir avec une machine virtuelle. L’adoption généralisée de Docker a également été facilitée par le fait que les développeurs peuvent ajouter leur propre code pour personnaliser et déployer des applications allégées. Ces applications peuvent ensuite être déployées directement sur les machines ou dans le cloud.
Pourquoi ai-je besoin d’une machine virtuelle ?
Bien que Docker ait l'avantage en termes d'empreinte en ressources, les machines virtuelles restent extrêmement importantes pour les organisations modernes. Ils constituent toujours un moyen fiable de limiter les coûts liés au matériel physique.La virtualisation de votre infrastructure avec des machines virtuelles permet une utilisation plus efficace des ressources de votre réseau.Par exemple, vous n’avez pas besoin de dépenser de l’énergie et des ressources en matière de ventilateur pour entretenir une machine virtuelle comme vous le feriez pour un ordinateur physique.
Vous pouvez également provisionner des ressources beaucoup plus efficacement avec des machines virtuelles. Les machines virtuelles peuvent être migrées d'un serveur physique à un autre pour garantir que les ressources informatiques sont réparties uniformément entre les appareils. Les administrateurs peuvent jongler avec les machines virtuelles afin que les capacités de stockage physique et de traitement soient réparties uniformément entre plusieurs machines.
Les machines virtuelles réduisent également le risque de panne de votre infrastructure.Alors qu’un périphérique physique peut subir une dégradation de ses performances et tomber en panne au fil du temps, ce n’est pas le cas du matériel virtuel. En conséquence, de nombreux administrateurs ont commencé à utiliser les machines virtuelles comme solution de reprise après sinistre et pour sauvegarder leurs données.
Article similaire: Meilleurs outils de surveillance Docker
Docker et machines virtuelles face à face
Moins efficace | Plus efficace |
Les VM exécutent leur propre système d'exploitation | Les conteneurs partagent un système d'exploitation hôte |
Virtualisation matérielle | Virtualisation du système d'exploitation |
Plus sécurisé (ségrégé) | Moins sécurisé (isolation au niveau du processus) |
Performance
Comme vous pouvez le constater, Docker présente certains avantages inhérents liés à sa structure. Un conteneur peut partager un noyau et des bibliothèques d'applications d'une manière que les machines virtuelles ne peuvent pas partager. De même,Docker nécessite moins de ressources informatiques que les machines virtuelles, ce qui offre une meilleure expérience au sein de l'application.
En temps réel, Docker consomme moins de ressources et peut démarrer beaucoup plus rapidement que les machines virtuelles. La raison en est que les machines virtuelles doivent charger un système d'exploitation à chaque démarrage.De même, vous n’avez pas besoin d’allouer des ressources aux conteneurs comme vous le faites avec les machines virtuelles.
Gestion
En termes de gestion, chacune de ces technologies offre une approche plus flexible en matière d'approvisionnement en ressources. Cependant, ces deux technologies doivent encore être gérées efficacement afin de bien fonctionner dans votre environnement. Avec la technologie des conteneurs, il s’agit de gérer les problèmes de sécurité et de s’assurer que le système d’exploitation partagé ne rencontre aucune panne.
Avec les machines virtuelles, la complexité se résume à la gestion des ressources virtuelles. Par exemple, vousbesoin de bande passante et de capacité de traitement pour prendre en charge les machines virtuelles(en particulier si vous exécutez plusieurs machines virtuelles sur un seul appareil). Si vous n’allouez pas les ressources nécessaires, les machines virtuelles ne fonctionneront pas efficacement.
L'administrateur doit également prendre en compte la manière dont il concilie l'utilisation de la machine virtuelle avec les ressources disponibles sur l'ensemble du réseau.Bien que la possibilité de déplacer des machines virtuelles soit idéale pour utiliser les ressources plus efficacement, cela implique la nécessité de s'assurer que les ressources sont réparties uniformément. Cela est également vrai pour Docker, mais c'est moins problématique en raison de ses performances légères.
Bien entendu, même si vous gérez parfaitement vos ressources, les machines virtuelles comportent toujours un certain nombre de risques. Il y a lerisque de dépasser les ressources disponiblesou une seule panne matérielle effaçant un groupe de machines virtuelles en une seule fois. Cela exerce une pression supplémentaire sur l'administrateur pour qu'il reste au courant de chaque petit détail d'utilisation. Ce problème n’est pas propre aux machines virtuelles, mais il est certainement plus problématique pour elles que pour les conteneurs Docker.
Portabilité
La portabilité de chaque technologie est pertinente pour ceux qui cherchent à optimiser les ressources réseau. Les conteneurs Docker sont des packages autonomes qui exécutent l'application requise.Les conteneurs Docker peuvent être portés facilement car ils n'ont pas de système d'exploitation séparé. Une fois portés, ils peuvent démarrer en quelques secondes, ce qui en fait l'alternative la plus portable.
En revanche, les machines virtuelles ne sont pas aussi portables car elles possèdent chacune leur propre système d’exploitation. Cela les rend encombrants car le système d’exploitation ne peut pas être porté sur une autre plate-forme et fonctionner correctement. Dans les environnements où vous devez déployer une variété d’applications sur différents problèmes, il est préférable d’utiliser Docker. La séparation du système d'exploitation du système d'exploitation du périphérique hôte garantit que les applications peuvent s'exécuter sans interruption inutile.
Sécurité
L'un des principaux domaines de litige entre la prise en charge des machines virtuelles et Docker concerne la configuration la plus sécurisée. Il s’agit d’un domaine particulièrement complexe car il existe de nombreux facteurs à aborder, depuis les vulnérabilités innées de Docker jusqu’au point de défaillance unique de l’hyperviseur d’une machine virtuelle. Dans cette section, nous allons examiner les deux plus grandes menaces pour la sécurité de chacune de ces technologies.
Ségrégation du système d'exploitation
Docker et les machines virtuelles séparent les applications les unes des autres. Cela signifie que si une application est compromise, elle ne peut pas affecter les autres applications. En théorie, cela offre une protection parfaite, mais Docker a un problème sous-jacent : toutes les applications partagent un système d'exploitation. Si le système d'exploitation est piraté par une application compromise, une attaque pourrait affecter tous les conteneurs à la fois.
Les machines virtuelles évitent ce problème engarder le système d'exploitation utilisé pour contrôler l'application séparé de l'hyperviseurqui interagit avec le matériel. Il existe un système d'exploitation avec lequel l'utilisateur peut interagir pour utiliser l'application, mais il ne lui permet pas d'interagir avec le matériel. Cela signifie que si une application présente un défaut, il est extrêmement peu probable qu’elle ait un effet négatif sur le matériel du système hôte.
En ce sens, les machines virtuelles offrent plus de sécurité contre les pannes du système d’exploitation et les failles de sécurité que les conteneurs Docker. Lele modèle de séparation des applications que Docker utilise pour optimiser l'utilisation des ressources se fait au détriment de la sécurité. Les machines virtuelles ont l'avantage car elles maintiennent le système d'exploitation séparé du matériel pour minimiser tout risque de dommage.
Point de défaillance unique : hyperviseur
Cependant, ce n’est pas parce que les machines virtuelles sont plus sécurisées en termes de séparation des applications qu’elles ne sont pas dépourvues de leurs propres vulnérabilités. Dans les machines virtuellesles hyperviseurs sont un point de défaillance unique. Si l’hyperviseur tombe en panne, une tonne d’applications pourraient tomber en panne d’un seul coup. Cela signifie que si un cyber-attaquant voulait endommager votre réseau, il pourrait alors envoyer des logiciels malveillants à la machine virtuelle.
En comparaison,Les conteneurs Docker n'ont pas de point de défaillance unique. Même si le point de défaillance unique peut potentiellement rendre les applications vulnérables, les hyperviseurs sont très difficiles à pirater. Même si un cyberattaquant pourrait pirater un hyperviseur, cela est très peu probable en raison de la complexité du code utilisé. À ce stade, la défaillance d’un hyperviseur constitue davantage une zone d’insécurité potentielle qu’un point d’entrée largement exploité.
Coût
Le coût de Docker et des machines virtuelles est un autre domaine difficile à mesurer. 451 Les recherches suggèrent que les conteneurs ont un TCO ou un coût total de possession inférieur à celui de la virtualisation matérielle . La raison en est que les conteneurs Docker utilisent les ressources plus efficacement. Chaque machine virtuelle possède son propre système d'exploitation qui doit être pris en charge par le système hôte. Cela nécessite des ressources informatiques qui font grimper les coûts du matériel physique à long terme.
Docker élimine ce problème en utilisant un seul système d'exploitation pour toutes ses applications. Les conteneurs partagent un seul système d'exploitation pour tenter de minimiser les besoins en ressources. Lorsque vous exécutez plusieurs applications, cela est particulièrement pertinent car vous pouvez exécuter de nombreuses applications différentes avec un seul système d'exploitation. En comparaison, les machines virtuelles auraient un système d’exploitation pour chaque application, ce qui signifie que vous devrez payer plus de ressources.
Les économies directes réalisées grâce aux conteneurs Docker sont difficiles à mesurer, mais il y a un certain nombre de facteurs à prendre en compte. Vous pourrez tirer davantage parti de votre infrastructure réseau actuelle avec des conteneurs qu'avec des machines virtuelles. De même, si vous avez besoin d’effectuer une mise à niveau, vous pouvez le faire avec moins de ressources tout en consommant plus d’énergie pour entretenir les machines virtuelles.
Lequel dois-je utiliser et quand ?
Même si Docker présente un avantage en termes d’efficacité et de performances, ne commettez pas l’erreur de penser que les conteneurs sont intrinsèquement meilleurs que les machines virtuelles. Docker et les machines virtuelles ont leurs propres avantages dans certaines situations. Déterminer si une application est placée dans un conteneur ou une machine virtuelle dépend entièrement de vos besoins d'utilisation. Dans cette section, nous allons voir comment choisir entre les deux.
Type de demande
Le premier facteur à prendre en compte lors de votre choix est le type d’application que vous souhaitez déployer. Les conteneurs sont conçus pour prendre en charge des applications qui ne sont pas liées au système d'exploitation hôte. Les conteneurs Docker sont destinés aux applications que vous souhaitez exécuter quelle que soit l'infrastructure du système hôte. Cela signifie que si vous souhaitez maintenir des systèmes embarqués qui s’intègrent plus étroitement au périphérique hôte, il est préférable d’opter pour une machine virtuelle.
Taille
Le prochain facteur à prendre en compte lors du choix entre les deux est la taille de votre candidature. La quantité de ressources informatiques dont votre application a besoin pour fonctionner efficacement déterminera celle que vous devrez choisir. Si vous cherchez à gérer des applications qui n'ont besoin que d'une seule machine pour s'exécuter sur un ordinateur, comme les microservices, un conteneur Docker serait le choix le plus naturel. En revanche, une machine virtuelle serait le meilleur choix pour les services hautement prioritaires comme les bases de données.
Cas d'utilisation
Infrastructure | Non | Oui |
Hôtes d’environnement de conteneur | Non | Oui |
Bases de données | Non | Oui |
Applications héritées | Oui | Non |
Microservices | Oui | Non |
Des applications Web | Oui | Non |
Comme vous pouvez le voir,les machines virtuelles ont l'avantage dans trois cas d'utilisation principaux:Infrastructure,hôtes d'environnement de conteneur, etbases de données. Le domaine principal concerne les infrastructures. Les machines virtuelles peuvent créer une infrastructure réseau sous la forme de routeurs et de pare-feu d'une manière qui n'est pas possible avec Docker. Les machines virtuelles ont la capacité d'interagir au niveau du matériel virtuel et de permettre à l'utilisateur d'apporter des modifications à l'infrastructure. Les machines virtuelles sont souvent utilisées comme hôtes de conteneurs en raison de leur capacité à interagir avec le matériel.
D'autre part,Docker offre un moyen léger de déployer des applications héritéesdans presque tous les environnements. Le fait que les bibliothèques soient contenues à côté de l’application les rend faciles à déployer. Les microservices sont également idéaux pour Docker car la structure simple des conteneurs se prête bien aux applications avec une tâche principale (par opposition à une application avec de nombreuses responsabilités différentes).
Docker vs machines virtuelles : mieux ensemble
Bien que Docker et les machines virtuelles présentent des avantages par rapport aux périphériques matériels, Docker est le plus efficace des deux en termes d'utilisation des ressources. Si deux organisations étaient complètement identiques et utilisaient le même matériel, alors l’entreprise utilisant Docker serait en mesure de gérer davantage d’applications. La capacité de Docker à gérer et déployer des applications dépasse tout simplement celle des machines virtuelles.
En fin de compte, cela dépend de l’architecture interne des machines virtuelles. L'émulation d'une infrastructure physique est peut-être plus légère qu'un périphérique matériel, mais elle reste trop lourde pour suivre le rythme de Docker. Il ne fait aucun doute que ces deux technologies doivent être gérées avec soin afin d’optimiser leur efficacité.
Cependant, ne vous laissez pas entraîner à supprimer complètement les machines virtuelles. La combinaison des deux vous permet de couvrir une gamme de cas d'utilisation et de garder vos ressources virtuelles aussi flexibles que possible. Vous pouvez également profiter de la sécurité des machines virtuelles sur des applications particulièrement importantes et des faibles exigences informatiques de Docker.
FAQ Docker et VM
Quelles sont les différences entre une image VM et une image Docker ?
Docker partage le système d'exploitation de l'hôte alors qu'une VM contient une installation du système d'exploitation. Une image Docker est un modèle en lecture seule utilisé pour créer le conteneur. Une image de machine virtuelle est un modèle utilisé pour créer une VM. L'image de la VM inclut le système d'exploitation, mais pas l'image Docker.
Qu'est-ce qui est le plus sécurisé, une image de machine virtuelle ou une image Docker ?
En général, les machines virtuelles sont plus sécurisées que les conteneurs car elles incluent le système d’exploitation, de sorte qu’il n’y a aucun moyen pour un intrus de pénétrer dans la VM via une routine écrite, par exemple en PowerShell, pour pénétrer dans l’espace de la VM. Les conteneurs Docker, quant à eux, utilisent le système d'exploitation hôte et il existe donc un canal que les pirates peuvent utiliser pour y accéder. Comme les images VM et Docker sont en lecture seule, elles ne peuvent pas être falsifiées et sont donc tout aussi sécurisées.
Puis-je exécuter Docker sur une VM ?
Il est possible d'utiliser Docker dans une VM. En vérité, Docker est un système Linux et afin de le rendre disponible pour Windows, les créateurs de Docker ont inclus une machine virtuelle Linux. Ainsi, Docker s’exécute déjà sur une VM sous Windows et vous n’obtiendrez probablement aucun avantage supplémentaire en le plaçant dans une autre couche de virtualisation. Si votre VM dispose d'un système d'exploitation invité Windows, vous pourriez rencontrer des problèmes d'efficacité, car vous obtiendriez automatiquement une VM Linux en plus pour faire fonctionner Docker.
Voir également: Outils et logiciels de surveillance des machines virtuelles