Liste der Unterschiede zwischen Containern und VMs

Abgeschlossen

Der Windows Server-Administrator von Contoso muss bestimmen, welche Workloads und Szenarien für VMs und welche besser für Container geeignet sind. Er beurteilt die Eigenschaften von VM- und Containerworkloads, die möglichen Verwendungsszenarios und die Umständen, unter denen Containerworkloads zum Steigern der Effizienz verwendet werden können.

Vergleich von virtuellen Computern und Containern

Sowohl VMs als auch Container sind Virtualisierungstechnologien, die isolierte portierbare Computingumgebungen für Anwendungen und Dienste bereitstellen:

  • VMs simulieren einen ganzen Computer, einschließlich virtualisierter Hardware, Betriebssystem, Benutzermodus und eigenem Kernelmodus. VMs sind recht flexibel und bieten enorme Unterstützung für Anwendungen. VMs sind jedoch tendenziell groß und beanspruchen Ressourcen des Hostcomputers.

  • Container (wie zuvor beschrieben) bauen auf dem Kernel des Hostbetriebssystems auf und enthalten einen isolierten Benutzermodusprozess für das App-Paket. Dadurch werden Container sehr kompakt und können schnell gestartet werden. Anders als VMs können Container problemlos aus der Entwicklung zum Testen in Produktionsumgebungen verschoben werden. Da das Betriebssystem jedoch nicht ganz dasselbe ist, werden nicht alle Anwendungen in einer Containerumgebung gleich (oder überhaupt) ausgeführt.

Ähnlichkeiten und Unterschiede

Die folgende Tabelle enthält eine Übersicht über die Ähnlichkeiten und Unterschiede zwischen den Features für VMs und Container.

Feature VM Container
Isolation Ermöglicht eine vollständige Isolation vom Hostbetriebssystem und anderen VMs. Ermöglicht eine einfache Isolation vom Host und anderen Containern.
OS Führt ein ganzes Betriebssystem einschließlich Kernel aus. Führt nur den Benutzermodusteil eines Betriebssystems aus.
Gastkompatibilität Alle unterstützten Betriebssysteme können in der VM ausgeführt werden. Windows-Container erfordern übereinstimmende Host- und Containerbetriebssystemversionen. (Weitere Details und Alternativen finden Sie im Abschnitt zum Isolationsmodus.)
Bereitstellung Wird mit dem Hyper-V-Manager oder anderen VM-Verwaltungstools bereitgestellt. Bereitgestellt und verwaltet mithilfe von Docker oder einer anderen Containerruntime. Mehrere Container können mithilfe eines Orchestrators wie Kubernetes bereitgestellt werden.
Dauerhafte Speicherung Verwendet VHD-Dateien oder SMB-Freigaben (Server Message Block). Daten gehen verloren, wenn ein Container nicht mehr vorhanden ist. Um Daten in einem Container mit Windows Server dauerhaft zu speichern, muss der persistente Speicher verwendet werden.
Lastenausgleich und Hochverfügbarkeit Verwendet einen Windows-Failovercluster oder einen Windows-Lastenausgleich, um virtuelle Computer nach Bedarf zu verschieben und ein höheres Volume zu unterstützen Verwendet einen Containerorchestrator, um Container automatisch zu starten und zu beenden, automatisch zu skalieren und zusätzlichen Datenverkehr zu unterstützen
Netzwerk Verwendet virtuelle Netzwerkadapter. Abhängig vom Szenario sind verschiedene Netzwerkoptionen verfügbar. Standard ist ein NAT-Netzwerk (Network Address Translation, Netzwerkadressenübersetzung), das einen internen Switch verwendet und Ports vom Host zum Container zuordnet.

Hinweis

Container werden üblicherweise in einer hochgradig optimierten VM bereitgestellt, um eine bessere Isolation und höhere Sicherheit zu ermöglichen.

Vorteile von Containern

Allgemein betrachtet bieten Container folgende Vorteile:

  • Sie benötigen relativ wenige Ressourcen. Sie sind weniger ressourcenintensiv als VMs.

  • Sie starten schnell. Die Startzeiten von Containern entsprechen ungefähr der Zeit, die zum Starten eines neuen Prozesses erforderlich ist.

  • Verbessert die Serverdichte. Container ermöglichen eine effizientere Nutzung von Arbeitsspeicher, Datenträger und CPU der verfügbaren Hardware als VMs. Dies führt zu weniger unproduktiven Servern und folglich zu einer besseren Auslastung der vorhandenen Computeressourcen. Dies ist besonders für Cloudanbieter und -benutzer von Bedeutung, da dadurch die Kosten gesenkt werden können.

  • Übertragbarkeit: Container verhalten sich gleich, unabhängig von der Umgebung, in der sie ausgeführt werden. Ein Container weist die Abhängigkeiten auf, damit eine Anwendung funktioniert. Dadurch weist ein Container die gleiche Leistung während Entwicklung, Test und Produktion sowie zwischen lokal und Cloud auf.

Die folgende Grafik enthält einen Vergleich von Isolation und Effizienz zwischen PCs, VMs, Containern und Prozessen. Sie macht Folgendes deutlich:

  • PCs bieten das größte Maß an Isolation. Die Isolation wird für VMs, Container und Prozesse zunehmend geringer.

  • Prozesse bieten das größte Maß an Effizienz und die größtmögliche Dichte. Container, VMs und PCs sind zunehmend ineffizienter.

  • Hardware, Kernel und Systemressourcen (z. B. ein Dateisystem) werden gemeinsam genutzt:

    • VMs verwenden nur Hardware gemeinsam.

    • Container verwenden Hardware und einen Kernel gemeinsam (mit Ausnahme von Windows Hyper-V-Containern, die keinen Kernel gemeinsam verwenden).

    • Prozesse verwenden Hardware, Kernel und Systemressourcen gemeinsam.

    • PCs verwenden keine Ressourcen gemeinsam.

Diagramm des Vergleichs von Isolation und Effizienz zwischen PCs, VMs, Containern und Prozessen.

Tipp

Für einen persistenten Speicher können Sie eine Bindungsbereitstellung verwenden, um einen Speicherort auf dem lokalen Computer einzubinden. Dateien im Speicherort sind verfügbar, wenn Sie einen Container neu starten oder wenn Sie die Dateien für mehrere Container gemeinsam verwenden möchten. Wenn ein Container auf mehreren Computern mit Zugriff auf die gleichen Dateien ausgeführt werden soll, sollte stattdessen ein benanntes Volume oder eine SMB-Bereitstellung verwendet werden.

Orchestratoren wie Kubernetes verfügen über eine eigene Implementierung des persistenten Speichers.

Achtung

Binden Sie bereitstellungssensible Verzeichnisse wie C:\ nicht an einen nicht vertrauenswürdigen Container. Dadurch könnte der nicht vertrauenswürdige Container Dateien auf dem Host ändern, auf die normalerweise kein Zugriff möglich wäre, sodass daraus eine Sicherheitsverletzung entstehen kann. Stellen Sie außerdem sicher, dass Ihr Container ordnungsgemäß funktioniert, wenn Sie in eine andere Umgebung wechseln. Sie sollten also vermeiden, einen Container an ein bestimmtes Laufwerk auf einem bestimmten Host zu binden.

Wann sollte eine VM ausgewählt werden?

Verwenden Sie in folgenden Fällen eine VM:

  • Sie müssen mehrere Betriebssysteme verwalten.

  • Sie müssen eine App ausführen, für die alle Ressourcen und Dienste eines vollständigen Betriebssystems erforderlich sind, z. B. eine grafische Benutzeroberfläche (GUI).

  • Sie benötigen eine Umgebung, die Änderungen beibehält und persistent ist. Beispiel: Datenbanken eignen sich nicht für die Ausführung auf Containern.

  • Es müssen vollständige Isolation und umfassende Sicherheit gewährleistet sein.

Wann sollte ein Container ausgewählt werden?

Verwenden Sie in folgenden Fällen einen Container:

  • Sie benötigen ein kompaktes Anwendungspaket, das schnell gestartet wird.

  • Es müssen mehrere Instanzen einer einzelnen App bereitgestellt werden. Die automatische Skalierung und/oder die horizontale Skalierung sind erforderlich.

  • Sie müssen bedarfsabhängige Apps oder Prozesse ausführen, die nicht persistent sind.

  • Sie müssen eine App bereitstellen, die auf jeder zugrunde liegenden Infrastruktur ausgeführt werden kann.