Maison  >  Article  >  Opération et maintenance  >  Docker fonctionne-t-il sur une machine physique ou une machine virtuelle ?

Docker fonctionne-t-il sur une machine physique ou une machine virtuelle ?

WBOY
WBOYoriginal
2022-06-27 11:12:046080parcourir

Docker peut fonctionner soit sur une machine physique, soit sur une machine virtuelle ; qu'il s'agisse d'une machine virtuelle ou d'une machine physique, il s'agit d'une méthode de livraison de matériel et d'infrastructure, qui est essentiellement un niveau, et les conteneurs sont principalement utilisés pour résoudre une série de problèmes centrés sur les logiciels, l'exécution de conteneurs sur des machines virtuelles et des machines physiques est réalisable.

Docker fonctionne-t-il sur une machine physique ou une machine virtuelle ?

L'environnement d'exploitation de ce tutoriel : système linux7.3, docker version 19.03, ordinateur Dell G3.

Docker peut s'exécuter sur une machine physique ou une machine virtuelle

Le conteneur Docker peut s'exécuter sur une machine virtuelle ou une machine physique

Qu'il s'agisse d'une machine virtuelle ou d'une machine physique, il s'agit d'une méthode de livraison de matériel/ l'infrastructure, essentiellement, est au même niveau ; et les conteneurs résolvent principalement une série de problèmes centrés sur les logiciels

À proprement parler, les conteneurs et les machines virtuelles ne sont pas au même niveau, ils sont un ensemble packagé de logiciels + environnement.

Exécuter des conteneurs sur des machines virtuelles est devenu une pratique pratique. Par exemple, le service de conteneurs d'AWS ne s'exécute que sur des machines virtuelles.

Le démon Docker peut communiquer directement avec le système d'exploitation principal pour allouer des ressources à chaque conteneur Docker ; il peut également isoler le conteneur du système d'exploitation principal et isoler chaque conteneur les uns des autres. Docker est souvent utilisé pour isoler différentes applications, telles que le front-end, le back-end et la base de données.

Connaissances étendues :

Le démon Docker peut communiquer directement avec le système d'exploitation principal pour allouer des ressources aux conteneurs Docker individuels ; il peut également isoler les conteneurs du système d'exploitation principal et isoler les conteneurs individuels les uns des autres. Docker est souvent utilisé pour isoler différentes applications, telles que le front-end, le back-end et la base de données.

Docker présente les caractéristiques de compacité, de migration et de déploiement rapides et de fonctionnement efficace, mais son isolement est pire que la virtualisation de serveur : différents conteneurs appartiennent à différentes feuilles de route (différentes instances d'application exécutées sur Docker) et sont indépendants les uns des autres (isolés) . Mais il est géré par le même gestionnaire d'entrepôt (noyau du système d'exploitation hôte), de sorte que le gestionnaire d'entrepôt peut voir les informations pertinentes de tous les conteneurs (le noyau du système d'exploitation étant partagé, les informations pertinentes seront partagées).

Les machines virtuelles sont plus efficaces pour isoler complètement l'ensemble de l'environnement d'exploitation. Par exemple, les fournisseurs de services cloud utilisent généralement la technologie des machines virtuelles pour isoler les différents utilisateurs. Une machine virtuelle met quelques minutes à démarrer, tandis qu'un conteneur Docker peut démarrer en millisecondes. Sans un système d'exploitation volumineux, Docker peut économiser beaucoup d'espace disque et d'autres ressources système.

La virtualisation du serveur revient à établir plusieurs "petits docks" indépendants - des entrepôts (machines virtuelles) sur le dock (hôte physique et couche de virtualisation). Il dispose d’un espace totalement indépendant (isolé) et appartient à différents clients (propriétaires de machines virtuelles). Chaque entrepôt possède son propre gestionnaire d'entrepôt (le noyau du système d'exploitation de la machine virtuelle actuelle) et ne peut pas gérer d'autres entrepôts. Il n’y a aucun partage d’informations.

Par conséquent, nous devons adopter différentes méthodes en fonction de différents scénarios et besoins d'application, en utilisant la technologie Docker ou en utilisant la technologie de virtualisation de serveur.

Comparaison des principes de mise en œuvre de Docker et des machines virtuelles

Les figures suivantes montrent respectivement les cadres de mise en œuvre des machines virtuelles et de Docker.

Docker fonctionne-t-il sur une machine physique ou une machine virtuelle ?

Comparez les différences entre les deux images. La couche Guest OS et la couche Hypervisor de la machine virtuelle dans l'image de gauche sont remplacées par la couche Docker Engine dans Docker. Le système d'exploitation invité d'une machine virtuelle est le système d'exploitation installé sur la machine virtuelle, qui est un noyau de système d'exploitation complet ; la couche hyperviseur de la machine virtuelle peut être simplement comprise comme une plate-forme de virtualisation matérielle, qui existe en tant que pilote d'état du noyau. dans le système d'exploitation hôte.

La méthode permettant aux machines virtuelles d'isoler les ressources consiste à utiliser un système d'exploitation indépendant et à utiliser l'hyperviseur pour virtualiser le processeur, la mémoire, les périphériques IO, etc. Par exemple, pour les processeurs virtuels, l'hyperviseur créera une structure de données pour chaque processeur virtuel, simulera les valeurs de tous les registres du processeur, suivra et modifiera ces valeurs le cas échéant. Il convient de préciser que dans la plupart des cas, le code logiciel de la machine virtuelle s'exécute directement sur le matériel sans l'intervention de l'hyperviseur. Uniquement sous certaines requêtes à privilèges élevés, le système d'exploitation invité doit exécuter le mode noyau pour modifier les données du registre du processeur, et l'hyperviseur interviendra pour modifier et maintenir l'état du processeur virtuel.

La façon dont l'hyperviseur virtualise la mémoire consiste à créer une table de pages fantômes. Dans des circonstances normales, une table de pages peut être utilisée pour traduire de la mémoire virtuelle vers la mémoire physique. Dans le cas de la virtualisation, puisque la mémoire dite physique est toujours virtuelle, la table des pages fantômes doit faire : mémoire virtuelle -> mémoire physique virtuelle -> mémoire physique réelle.

Pour la virtualisation des périphériques IO, lorsque l'hyperviseur reçoit une erreur de page et constate que l'adresse de la mémoire physique virtuelle correspond réellement à un périphérique d'E/S, l'hyperviseur utilise un logiciel pour simuler les conditions de fonctionnement de cet appareil et revient. Par exemple, lorsque le CPU souhaite écrire sur le disque, l'hyperviseur écrit les données correspondantes dans un fichier du système d'exploitation hôte. Ce fichier simule en fait un disque virtuel.

Par rapport à la solution de machine virtuelle pour réaliser l'isolation des ressources et de l'environnement, Docker est beaucoup plus simple. Docker Engine peut être simplement vu comme une encapsulation des opérations du système de fichiers NameSpace, Cgroup et de gestion d'images de Linux. Docker n'utilise pas de système d'exploitation invité complètement indépendant pour réaliser l'isolation de l'environnement comme une machine virtuelle. Il utilise la méthode de conteneur actuellement prise en charge par le noyau Linux lui-même pour réaliser l'isolation des ressources et de l'environnement. Pour faire simple, Docker utilise l'espace de noms pour isoler l'environnement système, utilise Cgroup pour implémenter des restrictions de ressources et utilise la mise en miroir pour isoler l'environnement du répertoire racine.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn