Inhaltsverzeichnis

Virtuelle Maschinen und Container

Linux-Container und virtuelle Maschinen (VM) sind paketierte Computing-Umgebungen, die verschiedene IT-Komponenten vereinen und vom Rest des Systems isolieren. Sie unterscheiden sich hauptsächlich in Bezug auf ihre Skalierbarkeit und Portierbarkeit.

Was ist der Unterschied zwischen einer virtuelle Maschine und einem Container?

Virtuelle Maschinen

Eine virtuelle Maschine (VM) emuliert durch Software ein Computersystem. Dadurch ist es möglich, viele dieser „virtuellen Maschinen“ getrennt voneinander auf einer einzigen Hardware zu betreiben, dem Host-Server. Dabei teilen sich die Softwares der VM – also Betriebssysteme wie Linux oder Windows und entsprechende Anwendungen – die Hardware-Ressourcen wie Festplatten, Arbeitsspeicher und CPU des Host-Servers. Jede VM hat dabei ein eigenes, vollständiges Betriebssystem, das auf einer emulierten Hardware läuft. Diese wird durch eine Software simuliert, die man Hypervisor nennt. Sie sitzt zwischen dem Betriebssystem des Host-Servers und der virtuellen Maschine.

Vorteile von VM´s

Nachteile von VM´s

Container

In einen Container werden nur die App und alle zum Ausführen erforderlichen Dateien paketiert. Häufig werden darin auch einzelne Funktionen paketiert, die bestimmte Aufgaben (sogenannte Microservices) ausführen. Container können aufgrund ihrer geringen Größe und ihres gemeinsam genutzten Betriebssystems (OS) sehr einfach in verschiedenen Umgebungen hin- und hergeschoben werden.

Wie VM´s sind auch Container ein Weg zur Virtualisierung. Doch sie virtualisieren dabei nicht ein ganzes Computersystem, sondern nur das Betriebssystem. In der Regel enthält ein Container nur eine Anwendung mit allen Binärdateien, Bibliotheken und Konfigurationsdateien, welche diese braucht. Dabei teilt sich jeder Container den Kernel des Host-Betriebssystems und normalerweise auch dessen Binärdateien und Bibliotheken. Diese von allen Containern verwendeten Komponenten sind schreibgeschützt. Durch diese gemeinsame Nutzung ist es nicht notwendig, dass der Code des Betriebssystems mehrmals kopiert werden muss.

Daher sind Container außergewöhnlich klein – sie sind nur wenige Megabyte groß und benötigen daher auch nur Sekunden zum Starten. VM´s dagegen brauchen oft Minuten, bis sie am laufen sind. Durch die geringe Größe von Containern kann man eine sehr große Zahl gleichzeitig auf einem Host-Server ausführen.

Container spielen heute eine große Rolle bei der agilen Softwareentwicklung, da man mit ihnen unzählige Versionen einer Anwendung mit all ihren Abhängigkeiten gleichzeitig testen kann. Zudem machen sie es möglich, sehr große und komplexe Softwarearchitekturen in Softwarekomponenten, sogenannte Microservices, zu zerlegen. Dabei läuft jeder Anwendungsprozess als Microservice in einem eigenen Container und kommuniziert über eine Schnittstelle mit anderen Prozessen. Dadurch ist es möglich, jederzeit einzelne Microservices unabhängig von den anderen zu ändern oder neu zu deployen, ohne die Stabilität der gesamten Softwarearchitektur zu gefährden. Firmen können so schnell große Architekturen aufbauen, skalieren und im laufenden Betrieb entwickeln. Beispiel von Unternehmen, die auf Microservices setzen, sind Google, Amazon und Netflix.

Die am häufigsten verwendete Plattform zur Container-Virtualisierung ist Docker. Ihr Name wird oft auch als Synonym für die Technologie benutzt. Auch die Cloud Container Engine der Open Telekom Cloud basiert auf Docker.

Vorteile von Containern

Nachteile von Containern

Wissenswertes zu diesem Thema