Die Evolution der Virtualisierung: Container-Technologie

Der Beginn der Virtualisierung

Ursprünglich in der Mainframewelt zuhause, revolutionierten virtuelle Maschinen (VMs) auf Basis von Lösungen wie VMWare, VirtualBox und Hyper-V auch in der Windows Welt den IT-Betrieb. Das Erstellen und Verwalten einzelner Server und ganzer Serverfarmen vereinfachte und beschleunigte sich durch die Einführung der Virtualisierung immens. Ein Rechenzentrumsbetrieb ohne VMs ist heute undenkbar. Der limitierende Faktor bei der Verwendung virtueller Maschinen war hier lange Zeit ausschließlich die zugrundeliegende Hardware. Der Ruf nach immer schnellerer Bereitstellung neuer Maschinen, besserer Skalierbarkeit und optimierter Ressourcen-Nutzung, führte mit der Zeit zur Notwendigkeit, die Virtualisierung weiterzuentwickeln. Eine treibende Kraft ist hier nicht zuletzt die steigende Akzeptanz Cloud-basierter Lösungen. Dadurch ergeben sich zusätzliche Anforderungen bezüglich Hochverfügbarkeit, Multi-Mandantenfähigkeit und Portabilität.

Container-Technologie hält Einzug

Container-Technologie hat enorme Vorteile Im Cloud-Zeitalter stehen Software-Dienste im Mittelpunkt. Diese müssen schnell und einfach entwickelt, getestet und bereitgestellt werden können. Dabei verschwimmen die Grenzen zwischen On-Premise und Cloud. Um all die genannten Anforderungen zu erfüllen, entstand die Idee virtuelle Maschinen um standardisierte Container zu ergänzen.

Aus dem Transportwesen kennen wir Container als eine Möglichkeit in genormten Behältern alle denkbaren Güter von A nach B zu verfrachten. Dabei können diese Container auf Schiffen, Zügen oder LKWs transportiert werden. Was sich innerhalb des Containers befindet, ist für den Transport völlig unerheblich. Der Schlüssel ist also die Entkopplung des Container-Inneren von der Außenwelt.

Wenn wir diese Idee nun in die Softwarewelt verlagern, ergibt sich daraus die Möglichkeit, Software zuverlässig laufen zu lassen, nachdem sie von einer Umgebung in eine andere transportiert wurde. Das heißt, eine Software funktioniert in einem Container exakt gleich, egal ob sich dieser auf dem Rechner des Entwicklers, in einer lokalen Testumgebung, einem physikalischen Computer oder innerhalb einer virtuellen Maschine On-Premise bzw. in der Cloud befindet.

Wie unterscheiden sich Container von virtuellen Maschinen?

Bildquelle: https://www.docker.com/whatisdocker Eine virtuelle Maschine besteht aus einem vollständigen Betriebssystem (OS) mit eigener Speicherverwaltung, Treibern, Massenspeicher und den erforderlichen Software-Komponenten, um Applikationen verwenden zu können. Ein Container dagegen beinhaltet kein Betriebssystem. Damit ist der Overhead eines Containers im Vergleich zu einer VM wesentlich geringer. Das Betriebssystem läuft bei diesem außerhalb des Containers. Dieses kann natürlich wiederum virtualisiert betrieben werden. Durch den Wegfall des Betriebssystems ist es möglich, Container in einem Bruchteil der Zeit zu starten. Darüber hinaus sind für den Betrieb der Container-Technologie wesentlich weniger Ressourcen nötig. Ein Container ist kleiner als eine VM, somit können auf einem Server sehr viel mehr Container als VMs betrieben werden.

Ein weiterer Vorteil besteht darin, dass alle erforderlichen Komponenten um eine Applikation zu nutzen, Bestandteil des Containers sind. D.h. die benötigten Bibliotheken und andere Binär- und Konfigurationsdateien werden mit dem Container bereitgestellt. Damit können keine Probleme mit unterschiedlichen Versionsständen und Patch-Levels auftreten, egal auf welcher Plattform der Container betrieben wird. Für den Betrieb von Software-Lösungen, egal ob On-Premise oder in der Cloud, ergeben sich durch Container ganz neue Möglichkeiten der Skalierbarkeit. Denn zusätzliche Container können schnell und einfach gestartet und in Betrieb genommen oder auch wieder gestoppt werden.

Aus der Tatsache, dass sich mehrere Container dasselbe Betriebssystem teilen, ergeben sich allerdings auch Nachteile. Gibt es beispielsweise Sicherheitslücken im Betriebssystem, können diese ggf. alle darauf betriebenen Container in Mitleidenschaft ziehen. Umgekehrt könnte mit privilegierten Berechtigungen innerhalb eines Containers, das darunterliegende OS angegriffen werden. Daher ist es zum einen wichtig, die Berechtigungen in Containern mit Bedacht zu setzen, und zum anderen das Betriebssystem stets mit den aktuellsten Updates zu versehen.

Docker und Windows Server 2016

GBS - Server-Manager Eine Möglichkeit Container-Technologien zu verwenden, stellt u.a. Docker zur Verfügung. Daneben existieren auch andere Lösungen, wie beispielsweise Rocket für CoreOS oder auch Kubernetes.

Die erste Docker Version wurde 2013 noch als „dotCloud“ veröffentlicht. 2014 konnte Docker in der Linux-Welt dann schnell an Bekanntheit und Popularität gewinnen. Durch die Partnerschaft mit Microsoft stand bisher Docker im Rahmen von Azure unter Linux zur Verfügung. Mit Windows Server 2016 sind diese Möglichkeiten jetzt auch im Microsoft Betriebssystem verfügbar. Dabei können Container auf zwei Arten verwendet werden, als Windows Server Container und Hyper-V Container. Beide Arten werden auf die gleiche Weise erstellt bzw. verwaltet und funktionieren identisch. Der Unterschied besteht im Isolationsgrad zwischen Container, Hostbetriebssystem und anderen Containern, die auf dem Host ausgeführt werden.

Bei der Verwendung von Windows Server Containern können mehrere Containerinstanzen auf einem Host gleichzeitig isoliert ausgeführt werden. Dies gilt u.a. für Ressourcen, Prozesse, Dateisystem und Namespaces. Der OS Kernel wird dabei zwischen Container und Host geteilt. Im Gegensatz zu Windows Server Container werden Hyper-V Container jeweils auf einem speziellen virtuellen Computer ausgeführt. Damit wird eine Isolation auf OS Kernel Ebene zwischen Hyper-V Container und Host erreicht. Über den Server-Manager kann das Windows-Container-Feature installiert werden. Zusätzlich sind dabei das Docker-Modul und der Docker-Client erforderlich. Sobald der Docker-Service gestartet ist, können über die Powershell Container erstellt werden.

Resümee

Mit der Bereitstellung von Windows Server Container-Technologie bieten sich für die oben genannten Prozesse der Software-Entwicklung sehr interessante Möglichkeiten. Diese waren bisher nur unter Linux realisierbar. Auch für den Software-Betrieb unter Windows stehen nun neue Skalierungsoptionen zur Verfügung.

Kennen Sie Docker? Hat die Container-Technologie auch bereits in Ihrem Unternehmen Einzug gehalten? Ich freue mich über Ihre Kommentare, weitere Tipps und Anregungen.

geschrieben von: Heiko Brenn

Heiko Brenn

Heiko Brenn ist bei GBS als Principal Senior Produkt Manager verantwortlich für die Collaboration Security Lösungen. Sein Aufgabengebiet erstreckt sich dabei sowohl auf die IBM-, Microsoft- als auch die Cloud-Plattformen. Er verfügt über umfassende, projektbezogene Expertise in den Bereichen E-Mail-Management und Collaboration.

Abonnieren Sie den GBS Newsletter und erhalten Sie neue Artikel sofort in Ihre Mailbox!

Posted in:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.