Maison > Article > Opération et maintenance > Quelle est la différence entre jvm et docker
Différences : 1. Il n'y a presque aucune perte de performances supplémentaire lors de l'exécution de Docker, tandis que la JVM aura des pertes supplémentaires de CPU et de mémoire ; 2. Docker est portable, flexible et peut être utilisé avec Linux, tandis que la JVM est relativement volumineuse et mal couplée. à la machine virtuelle. Élevé ; 3. L'image stockée par docker est petite, tandis que l'image stockée par jvm est énorme.
L'environnement d'exploitation de ce tutoriel : système linux7.3, version docker-1.13.1, ordinateur Dell G3.
Docker a moins de couches d'abstraction que les machines virtuelles. Docker ne nécessite pas d'hyperviseur pour virtualiser les ressources matérielles. Les programmes exécutés sur des conteneurs Docker utilisent directement les ressources matérielles de la machine physique réelle. Par conséquent, Docker aura des avantages évidents en termes d’efficacité en termes d’utilisation du processeur et de la mémoire.
Docker utilise le noyau de l'hôte et ne nécessite pas de système d'exploitation invité. Par conséquent, lors de la création d’un conteneur, il n’est pas nécessaire de recharger un noyau de système d’exploitation comme une machine virtuelle. Cela évite le processus long et gourmand en ressources de démarrage, de chargement du noyau du système d'exploitation et de retour. Lorsqu'une nouvelle machine virtuelle est créée, le logiciel de la machine virtuelle doit charger le système d'exploitation invité et le retour au nouveau processus de création prend place. minutes. La création d'un nouveau conteneur Docker ne prend que quelques secondes.
Par rapport à JVM :
Docker fonctionne avec presque aucune perte de performances supplémentaire, tandis que le système d'exploitation JVM consomme du processeur et de la mémoire supplémentaires
Docker est portable, léger, flexible et adaptable à Linux, tandis que JVM est volumineux et Virtuel Haut degré de couplage machine
L'image stockée par Docker est petite et facile à stocker et à transférer. L'image de la JVM est énorme.
La technologie "Conteneur" telle que Docker simule un système d'exploitation entier. Elle existe de manière statique et peut prendre en charge l'exécution d'applications sur n'importe quelle même plateforme, et le conteneur lui-même est indépendant du processus
jvm est une plateforme d'exécution de code spécifique, qui existe lors de l'exécution, ne peut prendre en charge que l'exécution de code spécifique et doit être dans le processus jvm. Les conteneurs tels que Docker pour le noyau Linux ne peuvent pas être directement compatibles avec Windows et jvm. la machine est indépendante de la plate-forme et presque toutes les plates-formes sont cohérentes. Le conteneur exécute du code natif, qui est ce qu'on appelle le « code machine »
jvm exécute un pseudo-code standard spécifique (c'est-à-dire le bytecode jvm). l'hôte est isolé, sans mappage d'hôte, le programme ne peut pas accéder directement aux ressources de l'hôte ;
jvm n'est pas isolé de l'hôte et peut mapper et utiliser les ressources de l'hôte par lui-même. Le conteneur est statique, autonome, dispose d'un système de fichiers. et les programmes exécutables, et ne Un processus doit être démarré ;
jvm n'a de sens que lorsqu'il est démarré en tant que processus. Il est indépendant, ne possède pas son propre système de fichiers et ne contient pas d'applications. fourni par des fichiers ou d'autres sources à partir du point d'entrée selon les besoins. Code
De manière générale, les machines virtuelles comme JVM et Docker ont des origines techniques. Ce sont toutes deux des environnements hôtes virtualisés
C'est juste que JVM est une application de niveau supérieur. environnement d'exécution virtuel orienté et spécifique. Docker est un environnement d'exécution universel orienté vers le niveau du système d'exploitation
Apprentissage recommandé : "
Tutoriel vidéo DockerCe 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!