2.1 Virtuelle Maschinen
Die Konzepte der Virtualisierung entstanden bereits in den 1960er Jahren, als IBM virtuelle Maschinen für ihre Mainframes entwickelte. Das ermöglichte eine effiziente Ressourcennutzung der Computer und die Isolation von Workloads. Seitdem hat sich die Virtualisierung weiterentwickelt und ist heute ein unverzichtbarer Bestandteil der IT-Infrastruktur.
Eine virtuelle Maschine (VM) ist eine Software-Emulation eines physischen Computers
. Sie ermöglicht es, Betriebssysteme und Anwendungen auszuführen, als ob sie auf einem separaten physischen Server laufen würden. Die Hauptkomponenten einer VM sind der Hypervisor, das Gastbetriebssystem und die Anwendungen.
Der Hypervisor ist eine Software zur Verwaltung virtueller Maschinen und zur Ressourcenzuweisung zwischen ihnen. Es gibt zwei Typen von Hypervisoren:
- Typ 1 (bare-metal): Wird direkt auf der Hardware installiert. Er zeichnet sich durch hohe Performance und minimale Overheads aus. Beispiele: VMware ESXi, Microsoft Hyper-V.
- Typ 2 (hosted): Läuft auf einem Host-Betriebssystem, was ihn flexibler, aber weniger performant macht. Beispiele: Oracle VirtualBox, VMware Workstation.
Gastbetriebssystem: Jede virtuelle Maschine enthält ein vollständiges Betriebssystem, das auf dem Hypervisor läuft. Dies ermöglicht die Nutzung verschiedener Betriebssysteme auf einem physikalischen Server.
Anwendungen: Anwendungen und deren Abhängigkeiten werden innerhalb des Gastbetriebssystems installiert, was Isolation und Unabhängigkeit gewährleistet.
Vorteile:
- Isolation: Virtuelle Maschinen sind vollständig isoliert, da jede VM ihr eigenes Betriebssystem und Ressourcen hat. Das verhindert, dass eine Anwendung eine andere beeinflusst.
- Kompatibilität: Virtuelle Maschinen unterstützen beliebige Betriebssysteme, einschließlich verschiedener Versionen eines Betriebssystems, was Flexibilität bietet.
- Sicherheit: Der hohe Grad der Isolation macht VMs sicherer – Schwachstellen in einer VM können andere nicht leicht beeinträchtigen.
Nachteile:
Ressourcenintensiv: Jede VM benötigt umfangreiche Ressourcen, da sie ein vollständiges Betriebssystem enthält. Das erhöht die Anforderungen an RAM und Speicherplatz.
Startzeit: Virtuelle Maschinen starten und stoppen langsamer, da das Betriebssystem geladen und heruntergefahren werden muss.
Verwaltung: Die Administration vieler VMs kann komplex und zeitaufwendig sein, insbesondere in großen Infrastrukturen.
2.2 Container
Die Idee der Containerisierung gibt es schon seit mehreren Jahrzehnten, aber sie wurde erst mit dem Aufstieg von Docker, das 2013 eingeführt wurde, populär. Docker hat die Nutzung von Containern vereinfacht und sie für die meisten Entwickler und Systemadministratoren zugänglich gemacht.
Container unterscheiden sich von virtuellen Maschinen dadurch, dass sie den Kernel des Host-Betriebssystems nutzen und eine Prozessisolation bieten. Mit ihnen können Anwendungen und deren Abhängigkeiten in isolierten Umgebungen ausgeführt werden, ohne ein separates Betriebssystem installieren zu müssen.
- Host-OS: Container nutzen den Kernel des Host-Betriebssystems, wodurch Ressourcen gespart und der Overhead reduziert wird.
- Container: Jeder Container enthält eine Anwendung und alle notwendigen Abhängigkeiten, jedoch kein separates Betriebssystem. Die Isolation der Container wird durch Technologien wie namespaces und cgroups gewährleistet, die den Zugriff auf Ressourcen einschränken und Prozesse voneinander trennen.
- Namespaces: Ein Kernel-Mechanismus von Linux, der eine isolierte Umgebung für Prozesse schafft, indem er Prozesse, Dateisysteme, Netzwerkinterfaces und andere Ressourcen anderer Container ausblendet.
- Cgroups: Eine Ressourcenmanagement-Technologie, mit der die Nutzung von CPU, Speicher, Disk-I/O und anderen Ressourcen durch Container gesteuert werden kann, um eine übermäßige Ressourcennutzung zu verhindern.
Vorteile:
- Leichtgewichtigkeit: Container benötigen weniger Ressourcen, da sie kein separates Betriebssystem erfordern. Auf einem physischen Server können mehr Container als virtuelle Maschinen ausgeführt werden.
- Schneller Start: Container starten und stoppen viel schneller als virtuelle Maschinen, da das Laden und Herunterfahren eines Betriebssystems nicht erforderlich ist.
- Portabilität: Container können leicht zwischen verschiedenen Umgebungen verschoben werden, da sie alle für die Anwendung benötigten Abhängigkeiten enthalten. Man kann einheitliche Images erstellen, die auf verschiedenen Plattformen ohne Änderungen funktionieren.
Nachteile:
- Isolation: Die Isolation von Containern ist weniger strikt im Vergleich zu virtuellen Maschinen, da sie einen gemeinsamen Kernel des Host-Betriebssystems nutzen. Wenn eine Anwendung in einem Container kompromittiert wird, können potenzielle Schwachstellen entstehen.
- Kompatibilität: Container müssen mit dem Host-Betriebssystem kompatibel sein, was ihre Nutzung in manchen Szenarien einschränken kann.
2.3 Vergleich von Containern und Virtuellen Maschinen

Ressourcenverbrauch:
- Container: benötigen weniger Ressourcen und nutzen den Arbeitsspeicher und die CPU effizienter. Auf einem physischen Server können mehr Container gestartet werden, was sie kostengünstig beim Skalieren macht.
- Virtuelle Maschinen: verbrauchen mehr Ressourcen, da sie ein vollständiges Betriebssystem benötigen. Jede virtuelle Maschine belegt einen erheblichen Teil des Arbeitsspeichers und des Festplattenspeichers, was ihre Anzahl auf einem Server begrenzt.
Geschwindigkeit:
- Container: starten und stoppen innerhalb von Sekunden, was sie ideal für Aufgaben macht, die schnelle Reaktionen und Skalierung erfordern.
- Virtuelle Maschinen: Starten und Stoppen dauert länger, da das Betriebssystem geladen werden muss. Virtuelle Maschinen können mehrere Minuten zum Hochfahren benötigen, was ihre Nutzung in dynamischen Umgebungen einschränkt.
Isolation:
- Container: bieten Prozess-Ebene-Isolation. Der Grad der Isolation ist geringer als bei virtuellen Maschinen, aber ausreichend für die meisten Anwendungen. Sie sind nicht geeignet für Aufgaben, die vollständige Isolation und maximale Sicherheit erfordern.
- Virtuelle Maschinen: bieten vollständige Isolation auf Betriebssystemebene. Ein hoher Schutzgrad macht sie zur optimalen Wahl für geschäftskritische Anwendungen und Daten.
Verwaltung und Skalierbarkeit:
- Container: sind einfach zu verwalten und zu skalieren, dank ihrer Leichtgewichtigkeit und schnellen Startzeiten. Orchestrations-Tools wie Kubernetes erleichtern das Management großer Container-Cluster.
- Virtuelle Maschinen: Verwaltung und Skalierung sind aufgrund des hohen Ressourcenverbrauchs schwieriger. Die Administration einer großen Anzahl virtueller Maschinen erfordert erhebliche Anstrengungen, insbesondere in dynamischen Umgebungen.
Die Wahl zwischen Containern und virtuellen Maschinen hängt von den jeweiligen Aufgaben ab. Container sind optimal dort, wo schnelles Deployment und Skalierung von Anwendungen mit minimalem Ressourcenverbrauch erforderlich sind. Ihre Portabilität und Leichtgewichtigkeit machen sie zur perfekten Wahl für Microservice-Architekturen und Cloud Computing.
Virtuelle Maschinen bieten bessere Isolation und Kompatibilität, was sie ideal für komplexe und geschäftskritische Anwendungen macht, die ein hohes Maß an Sicherheit und Unabhängigkeit erfordern. Sie sind unverzichtbar beim Deployment von mehrschichtigen Anwendungen und Infrastrukturen, bei denen ein vollständiges Betriebssystem für jede Arbeitslast erforderlich ist.
In der Praxis setzen viele Organisationen auf einen hybriden Ansatz und nutzen sowohl Container als auch virtuelle Maschinen, um eine optimale Balance zwischen Leistung, Flexibilität und Sicherheit zu erreichen.
GO TO FULL VERSION