L'une des questions fréquemment posées à propos de Docker est de savoir en quoi il diffère de la VM (machine virtuelle)
En ce qui concerne l'infrastructure en nuage, la machine virtuelle a été la norme de référence pour ses nombreux avantages. Cependant, que se passerait-il si vous disposiez d'une alternative à la machine virtuelle qui soit plus légère, plus économique et plus évolutive ? C'est précisément ce qu'est Docker
Docker est une technologie basée sur des conteneurs qui vous permet de développer des applications distribuées. Dans cet article de blog, je vais vous expliquer les différences entre les machines virtuelles et les conteneurs Docker
Qu'est-ce qu'une machine virtuelle ?
Une machine virtuelle est un système qui agit exactement comme un ordinateur
En termes simples, elle permet d'exécuter ce qui semble être sur plusieurs ordinateurs distincts sur du matériel, c'est-à-dire un seul ordinateur. Chaque machine virtuelle nécessite son système d'exploitation sous-jacent, puis le matériel est virtualisé
Qu'est-ce que Docker ?
Docker est un outil qui utilise des conteneurs pour faciliter la création, le déploiement et l'exécution d'applications. Il lie l'application et ses dépendances à l'intérieur d'un conteneur
Apprendre Docker est facile !
Docker vs. VM
Je vais maintenant vous expliquer les différences significatives entre les conteneurs Docker et les machines virtuelles. Eh bien, les différences significatives sont la prise en charge du système d'exploitation, la sécurité, la portabilité et la performance
Discutons donc de chacun de ces termes un par un
Prise en charge du système d'exploitation
La prise en charge du système d'exploitation d'une machine virtuelle et d'un conteneur Docker est très différente. Dans l'image ci-dessus, vous pouvez voir que chaque machine virtuelle a son système d'exploitation invité au-dessus du système d'exploitation hôte, ce qui rend les machines virtuelles lourdes. En revanche, les conteneurs Docker partagent le système d'exploitation hôte, ce qui explique leur légèreté
Le partage du système d'exploitation hôte entre les conteneurs les rend très légers et leur permet de démarrer en quelques secondes seulement. Par conséquent, les frais généraux liés à la gestion du système de conteneurs sont très faibles par rapport à ceux des machines virtuelles
Les conteneurs Docker conviennent aux situations dans lesquelles vous souhaitez exécuter plusieurs applications sur un seul noyau de système d'exploitation. Mais si vous avez des applications ou des serveurs qui doivent fonctionner sur différentes saveurs de système d'exploitation, des machines virtuelles sont nécessaires
Sécurité
La machine virtuelle ne partage pas le système d'exploitation et il y a une forte isolation dans le noyau hôte. Elles sont donc plus sûres que les conteneurs. Un conteneur présente de nombreux risques et vulnérabilités en matière de sécurité, car les conteneurs ont un noyau hôte partagé
De plus, comme les ressources Docker sont partagées et ne sont pas nommées, un attaquant peut exploiter tous les conteneurs d'un cluster s'il a accès à ne serait-ce qu'un seul conteneur. Dans une machine virtuelle, vous n'avez pas d'accès direct aux ressources, et l'hyperviseur est là pour restreindre l'utilisation des ressources dans une VM
Portabilité
Les conteneurs Docker sont facilement portables car ils n'ont pas de systèmes d'exploitation distincts. Un conteneur peut être porté sur un autre système d'exploitation et démarrer immédiatement. En revanche, les machines virtuelles ont des systèmes d'exploitation distincts, de sorte que le portage d'une machine virtuelle est plus difficile que celui d'un conteneur et prend également beaucoup de temps en raison de sa taille
Pour le développement, lorsque les applications doivent être développées et testées sur différentes plateformes, les conteneurs Docker sont le choix idéal
Performance
Il serait injuste de comparer les machines virtuelles et les conteneurs Docker, car ils sont tous deux utilisés à des fins différentes. Mais l'architecture légère de Docker et ses caractéristiques moins gourmandes en ressources en font un meilleur choix qu'une machine virtuelle. Par conséquent, les conteneurs peuvent démarrer très rapidement par rapport aux machines virtuelles, et l'utilisation des ressources varie en fonction de la charge ou du trafic
Contrairement aux machines virtuelles, il n'est pas nécessaire d'allouer des ressources de manière permanente aux conteneurs. La mise à l'échelle et la duplication des conteneurs est également une tâche facile par rapport à celle des machines virtuelles, car il n'est pas nécessaire d'y installer un système d'exploitation
Conclusion
Voici un tableau qui conclut sur les différences entre une machine virtuelle et un conteneur Docker
Machine virtuelle | Conteneur Docker |
Isolation des processus au niveau du matériel | Isolation des processus au niveau du système d'exploitation |
Chaque machine virtuelle a un système d'exploitation distinct | Chaque conteneur peut partager le système d'exploitation |
Démarrage en quelques minutes | Démarrage en quelques secondes |
Les machines virtuelles ne pèsent que quelques Go | Les conteneurs sont légers (Ko/Mo) |
Les machines virtuelles prêtes à l'emploi sont difficiles à trouver | Les conteneurs Docker préconstruits sont facilement disponibles |
Les machines virtuelles peuvent être déplacées facilement vers un nouvel hôte | Les conteneurs sont détruits et recréés plutôt que déplacés |
La création d'une VM prend relativement plus de temps | Les conteneurs peuvent être créés en quelques secondes |
Utilisation accrue des ressources | Moins de ressources |
-
Avi est un passionné de technologie avec une expertise dans les technologies en vogue telles que DevOps, Cloud Computing, Big Data et bien d'autres. Il est passionné par l'apprentissage des technologies de pointe et le partage de ses connaissances avec d'autres... en savoir plus