Virtualisierung mit Hypervisoren und Container-Software

Der Unterschied zwischen Hypervisor Typ 1 und Hypervisor Typ 2

Ein Hypervisor ist eine Virtualisierungssoftware, welche es ermöglicht, mehrere Betriebssysteme auf einer einzigen Hardware auszuführen. Es handelt sich hierbei aber nicht einfach um einen Bootloader, der einem beim Hochfahren der Maschine ermöglicht das entsprechende Betriebssystem auszuwählen, sondern um viel mehr.
Bei Hypervisoren unterscheidet man zwischen den Typen 1 und 2.

Beim Typ 1 läuft ohne eine weitere Zwischenschicht die Software direkt auf der Hardware. Die virtuellen Maschinen (VMs) laufen in einer eigenständigen Domain. Die virtuellen Maschinen sind voneinenader abgeschirmt und deshalb nicht gegenseitig sichtbar. Die Verwaltung wird standartmäßig über eine privilegierte VM (meistens das Hypervisor-OS selbst) verwaltet. Treiber um den virtuellen Maschinen CPU, I/O, und RAM zur Verfügung zu stellen hat der Hypervisor vom Typ 1 selbst zur Verfügung.
Beispiele für diese Art von Hypervisoren sind:

Der Typ 2 zeichnet sich aus, dass er auf einem Betriebssystem selbst läuft und so auch die Treiber von diesem OS benutzt. Eine Verwaltung der VMs erfolgt bei diesem Typ über das Host-Betriebssystem und so wird jede virtuelle Maschine in einem eigenen isolierten Prozess innerhalb des Host-Betriebssystems ausgeführt.
Beispiele für diese Art von Hypervisor sind:

Was unterscheidet einen Container von einer Virtuellen Maschine?

Bei Applikationen, die in einem Container laufen ist nur ein Betriebssystem vorhanden. Der Kernel des Betriebssytems wird sich untereinander geteilt. Diese Bereiche beschränken sich auf "read-only" desweiteren beschränken sich diese Bereiche auf "writing"-Tasks. Dank dieser Konstellation benötigt ein Container wesentlich weniger Ressourcen als eine Virtuelle Maschine, welcher noch ein Betriebssystem enthält.

Die Aufgabengebiete von Containern belaufen sich z.B. auf Entwicklungsumgebungen, die einfach zwischen den Entwicklern ausgetauscht und aktualisiert werden. Somit besteht nicht die Gefahr, dass Software oder Biblotheken bei der Entwicklung zum Einsatz kommen, die veraltet, oder sich von den anderen Entwicklern unterscheiden. Auch werden Container gerne bei Hostern verwendet, die schnell in Ihren Cloud-Umgebungen einen entsprechenden Service anbieten wollen (Webserver, bestimmt Software...). So lassen sich die Container einfach mit einer Automatisierungs-Software, wie Puppet, oder Ansible erstellen auf dem Kunden zugewiesenen Storage ausgerollt werden.
Schaut man sich das heutige Zahlenverhältnis zwischen Computersystemen und deren Administratoren an ist eine manuelle Kontrolle nicht mehr zu realisieren und wenn ein Benutzer eine Problematik feststellt ist es normalerweise schon zu spät, da das Problem ja durch "Predicting" verhindert werden sollte.