Heim >Betrieb und Instandhaltung >Docker >Was ist der Unterschied zwischen Docker-Containern und traditioneller Virtualisierung?
Unterschied: 1. Die Erstellungsgeschwindigkeit der herkömmlichen Virtualisierung ist sehr langsam, während die Erstellungsgeschwindigkeit der Containervirtualisierung sehr hoch ist. 2. Die herkömmliche Virtualisierung fügt der Systemanpassungskette Verknüpfungen hinzu und verursacht Leistungsverluste, während die Containervirtualisierung einen gemeinsamen Kern hat und weist nahezu keinen Leistungsverlust auf. 3. Die herkömmliche Virtualisierung unterstützt mehrere Betriebssysteme, während die Containervirtualisierung nur vom Kernel unterstützte Betriebssysteme unterstützt.
Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Docker-1.13.1-Version, Dell G3-Computer.
Traditionelle Virtualisierungstechnologie
Virtualisierung bezieht sich auf die Virtualisierung eines Computers in mehrere logische Computer durch Virtualisierungstechnologie. Auf einem Computer können mehrere logische Computer gleichzeitig ausgeführt werden, und Anwendungen können in unabhängigen Bereichen ausgeführt werden, ohne sich gegenseitig zu beeinträchtigen, wodurch die Arbeitseffizienz des Computers erheblich verbessert wird.
Mit der kontinuierlichen Weiterentwicklung der Hardware-Hersteller müssen viele Anweisungen in der virtuellen Maschine nicht über die virtuelle Hardware-Schicht auf die reale Hardware-Ebene übertragen werden. Hardware-Hersteller unterstützen praktische Anweisungen zum Betrieb der Hardware direkt in der virtuellen Maschine Im Vergleich zur Hardware-Virtualisierung muss bei dieser Art der Hardware-Virtualisierung nicht die gesamte Hardware simuliert werden, um Leistung und Effizienz zu gewährleisten Verhältnis Herkömmliche Virtualisierung ist höher.
Virtualisierung auf Systemebene
Eigenschaften:
Keine Notwendigkeit, die Hardwareschicht zu simulieren.
Teilen Sie den Kernel desselben Hosts
Der Unterschied zwischen herkömmlicher Virtualisierung und Containervirtualisierung
Container-Kerntechnologie
1.CGroup begrenzt die Ressourcennutzung von Containern
2.Namespace-Mechanismus zur Erzielung der Isolation zwischen Containern
3.chroot, Dateisystemisolation.
CGroup:
Linux-Kernel Bietet Einschränkungen, Aufzeichnungen und Die von Google-Ingenieuren vorgeschlagene Isolierung der Ressourcennutzung erfolgt über verschiedene Subsysteme.
/sys/fs/cgroup: Der Container verfügt über einen eigenen unabhängigen Prozess Tabelle und Thread Nr. 1. net: Der Container hat seine eigenen unabhängigen Netzwerkinformationen ipc: Während der IPC-Kommunikation müssen zusätzliche Informationen hinzugefügt werden, um den Prozess zu identifizieren mnt: Jeder Container hat seinen eigenen eindeutigen Verzeichnis-Mount
utc: Jeder Container hat einen unabhängigen Hostnamen und eine unabhängige Domänechroot:Ein Verzeichnis im Host ist das Stammverzeichnis im Container.Alle Anwendungen haben eigene Abhängigkeiten, einschließlich Software- und Hardwareressourcen. Docker ist eine offene Plattform für Entwickler, die Abhängigkeiten isoliert, indem sie jede Anwendung in einen Container packt. Container sind wie leichte virtuelle Maschinen, die auf Tausende von Knoten skaliert werden können und dabei helfen, die Cloud-Portabilität zu erhöhen, indem sie dieselbe Anwendung in verschiedenen virtuellen Umgebungen ausführen. Virtuelle Maschinen werden im Cloud Computing häufig verwendet, um durch den Einsatz virtueller Maschinen Isolation und Ressourcenkontrolle zu erreichen. Die virtuelle Maschine lädt ein komplettes Betriebssystem mit eigener Speicherverwaltung, wodurch Anwendungen effizienter und sicherer werden und gleichzeitig ihre hohe Verfügbarkeit gewährleistet werden.
Was ist der Unterschied zwischen Docker-Containern und virtuellen Maschinen?
Die virtuelle Maschine verfügt über ein vollständiges Betriebssystem und ihre eigene Speicherverwaltung wird durch zugehörige virtuelle Geräte unterstützt. In einer virtuellen Maschine werden dem Benutzerbetriebssystem und dem Hypervisor effiziente Ressourcen zugewiesen, sodass mehrere Instanzen eines oder mehrerer Betriebssysteme parallel auf einem einzelnen Computer (oder Host) ausgeführt werden können. Jedes Gastbetriebssystem wird als einzelne Einheit innerhalb des Hostsystems ausgeführt.
Andererseits werden Docker-Container mit der Docker-Engine und nicht mit einem Hypervisor ausgeführt. Container sind daher kleiner als virtuelle Maschinen und können aufgrund der gemeinsamen Nutzung des Host-Kernels schneller starten, bei besserer Leistung, weniger Isolation und besserer Kompatibilität. Docker-Container können einen Kernel und Anwendungsbibliotheken gemeinsam nutzen, sodass Container einen geringeren Systemaufwand haben als virtuelle Maschinen. Solange Benutzer bereit sind, eine einzige Plattform zur Bereitstellung eines gemeinsamen Betriebssystems zu verwenden, können Container schneller sein und weniger Ressourcen verbrauchen. Das Erstellen und Starten einer virtuellen Maschine kann Minuten dauern, während das Erstellen und Starten eines Containers nur Sekunden dauern kann. In Containern enthaltene Anwendungen bieten eine bessere Leistung als die Ausführung von Anwendungen in virtuellen Maschinen. Einer der Schlüsselindikatoren dafür, dass Docker-Container schwächer sind als virtuelle Maschinen, ist „Isolation“. Die VT-d- und VT-x-Technologien von Intel bieten Ring-1-Hardware-Isolationstechnologie für virtuelle Maschinen, sodass virtuelle Maschinen diese voll ausnutzen können. Es hilft virtuellen Maschinen, Ressourcen effizient zu nutzen und gegenseitige Störungen zu verhindern. Docker-Container verfügen außerdem über keinerlei Hardware-Isolierung, was sie anfällig für Angriffe macht.Wie wählt man aus?
Die Wahl zwischen Containern oder virtuellen Maschinen hängt davon ab, wie die Anwendung gestaltet ist. Wenn die Anwendung auf Skalierbarkeit und hohe Verfügbarkeit ausgelegt ist, sind Container die beste Wahl, andernfalls kann die Anwendung in einer virtuellen Maschine platziert werden. Für Unternehmen mit hohen E/A-Anforderungen, wie z. B. Datenbankdiensten, wird empfohlen, Docker + physische Maschinen bereitzustellen, da bei der Bereitstellung von Docker in einer virtuellen Maschine die E/A-Leistung durch die virtuelle Maschine begrenzt wird. Für Unternehmen wie virtuelle Desktop-Dienste, bei denen Mandantenberechtigungen und Sicherheit im Vordergrund stehen, wird die Verwendung virtueller Maschinen empfohlen. Die mandantenfähige starke Isolationsfunktion virtueller Maschinen stellt sicher, dass andere Mandanten und Hosts sicher sind, während Mandanten über Root-Berechtigungen für die virtuelle Maschine verfügen .
Oder eine bessere Option ist eine Hybridlösung, bei der Container in virtuellen Maschinen ausgeführt werden. Docker-Container können in virtuellen Maschinen ausgeführt werden und ihnen bewährte Isolation, Sicherheitseigenschaften, Mobilität, dynamische virtuelle Netzwerke und mehr bieten. Um eine sichere Isolation und eine hohe Ressourcenauslastung zu erreichen, sollten wir grundsätzlich der Idee folgen, die Isolation virtueller Maschinen für den Geschäftsbetrieb verschiedener Mandanten zu verwenden und ähnliche Geschäftstypen auf demselben Containersatz bereitzustellen.
Fazit
Docker-Container werden zu einem wichtigen Werkzeug in DevOps-Umgebungen. In der DevOps-Welt gibt es viele Anwendungsfälle für Docker-Container. Das Ausführen von Anwendungen auf Docker-Containern und deren Bereitstellung überall (in der Cloud oder lokal oder in jeder Linux-Variante) ist jetzt Realität.
Virtuelle Maschinen bieten beim Arbeiten in heterogenen Umgebungen ein hohes Maß an Flexibilität, während Docker-Container sich hauptsächlich auf Anwendungen und deren Abhängigkeiten konzentrieren. Docker-Container ermöglichen die einfache Portierung von Anwendungsstapeln über Clouds hinweg, indem sie die virtuelle Maschinenumgebung jeder Cloud für die Verwaltung von Clouds nutzen. Dies stellt eine nützliche Funktion dar, die ohne Docker-Container auf komplexere und langwierigere Weise implementiert werden müsste. Hier geht es nicht darum, die virtuelle Maschine aufzugeben, sondern bei Bedarf zusätzlich zur virtuellen Maschine Docker-Container entsprechend der tatsächlichen Situation zu verwenden. Es wird nicht angenommen, dass Docker-Container die virtuelle Maschine vollständig eliminieren können.
Empfohlenes Lernen: „Docker-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Docker-Containern und traditioneller Virtualisierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!