Virtuelle Maschine vs. Container: Virtualisierungsebene, Kernel, Startzeit, Isolation und Einsatz
Beide lassen auf einem Rechner mehrere Anwendungen voneinander isoliert laufen, virtualisieren aber verschiedene Ebenen. Bei einer virtuellen Maschine erzeugt ein Hypervisor virtuelle Hardware wie CPUs, Speicher, Festplatten und Netzwerkgeräte, und jede virtuelle Maschine führt darauf ein vollständiges Betriebssystem samt Kernel aus. Ein Container teilt sich den Kernel des Host-Betriebssystems und trennt mit Kernelfunktionen wie Namespaces und cgroups, was Prozesse sehen und welche Ressourcen sie nutzen dürfen. Container booten kein Betriebssystem, sind daher leichter und starten schneller, während virtuelle Maschinen bei der Stärke der Isolation und der Auswahl lauffähiger Betriebssysteme vorne liegen. In der Cloud werden beide üblicherweise kombiniert, indem Container in virtuellen Maschinen laufen.
| Merkmal | Virtuelle Maschine | Container |
|---|---|---|
| Virtualisierungsebene | Hardware: Der Hypervisor erzeugt virtuelle CPUs, Speicher, Festplatten und Netzwerkgeräte und teilt sie zu | Betriebssystem: Auf dem Host-Kernel werden getrennt, was Prozesse sehen (Prozess-IDs, Netzwerk, Dateisystem usw.) und welche Ressourcen sie nutzen dürfen |
| Betriebssystemkernel | Jede virtuelle Maschine führt ein eigenes Betriebssystem (Gastbetriebssystem) mit eigenem Kernel aus | Alle Container teilen sich den Host-Kernel; Container-Images enthalten keinen Kernel |
| Lauffähige Betriebssysteme | Auch eine andere Art von Betriebssystem als der Host (z. B. Windows auf einem Linux-Host) | Nur was auf dem Host-Kernel läuft; Linux-Container brauchen einen Linux-Kernel |
| Image-Größe | Enthält ein ganzes Betriebssystem, daher typischerweise im Gigabytebereich | Nur die Anwendung und die benötigten Bibliotheken, daher typischerweise viel kleiner als eine virtuelle Maschine |
| Startzeit | Beginnt mit dem Booten eines Betriebssystems und dauert daher oft einige zehn Sekunden bis einige Minuten | Startet nur Prozesse und ist daher schnell; läuft typischerweise innerhalb weniger Sekunden |
| Stärke der Isolation | Stark: Trennung auf Hardwareebene, daher greifen Probleme im Kernel eines Gastes kaum auf andere virtuelle Maschinen über | Schwächer als bei einer virtuellen Maschine: Der Kernel wird geteilt, daher kann eine ausgenutzte Kernel-Schwachstelle den Host und andere Container treffen |
| Ressourceneffizienz | Jedes Gastbetriebssystem belegt eigenen Speicher und eigene CPU, daher passen weniger auf einen Rechner | Keine doppelten Betriebssysteme, daher passen mehr in dieselben Ressourcen |
| Typischer Einsatz | Verschiedene Betriebssysteme nebeneinander, Serverkonsolidierung, virtuelle Maschinen bei IaaS, Umgebungen mit starker Isolation | Microservices, Test und Auslieferung in CI/CD, Betrieb im großen Maßstab mit Kubernetes, gleiche Umgebung in Entwicklung und Produktion |
Die Zahlenwerte sind typische Größenordnungen und variieren je nach Prozessgeneration und Produkt.