Devops gehört derzeit zu den großen Diskussionsthemen in den Entwicklungsabteilungen. Im Fokus stehen Prozesse und Werkzeuge, um IT-basierte Wertschöpfungsmodelle zu optimieren und agiler zu gestalten. Ein zentrales Element in diesem Konzept ist die Containertechnik, die Docker vor zwei Jahren der Virtualisierungsszene als Lösungsansatz nahebrachte. In diesem Kontext stellen Tools wie Docker und Apache Mesos bisherige Virtualisierungskonzepte auf den Kopf.

Container garantieren Entwicklern und Unternehmen mehr Sicherheit und eine effizientere Virtualisierung von Anwendungen. Darüber hinaus spielen sie im Bereich Testing eine große Rolle zur Realisierung eines echten Devops-Konzepts, da sie zur Automatisierung beitragen. Sie sind im Handumdrehen einsatzfähig, jedoch auch sehr sicher. Bei Containern handelt es sich um gekapselte virtuelle Server, bei denen das Betriebssystem ebenfalls virtualisiert ist. Auf diese Weise kann die IT verteilte Applikationen direkt ausbringen.

Container vs. klassische Virtualisierung

Die Vorteile von Containern sind eindeutig: Sie sind sehr gut skalierbar, portabel und ermöglichen ein einfacheres Deployment als klassische virtuelle Maschinen (VMs). Vor diesem Hintergrund setzen die Hersteller von Container-Services die Anbieter klassischer Virtualisierungslösungen stark unter Druck. Aus diesem Grund haben die VM-Provider bereits nach und nach Schnittstellen für Container eingeführt: VMware hat mit Photon OS ein eigenes Betriebssystem für die Linux-Distribution auf den Markt gebracht und Microsoft integrierte den Service „Docker Datacenter“, um die Verwaltung von Containern über Azure und Azure Stack zu ermöglichen.

Aufbau einer containerbasierten Cloud-Architektur mit Cloud Foundry. Bild: DARZ

Die Herausforderung beim Betrieb virtueller Server besteht darin, dass die virtuellen Betriebssysteme, Treiber und Systemdateien einen starken Overhead verursachen. Beim Betrieb einer Vielzahl von VMs wird bereits ein Großteil der verfügbaren Ressourcen für den generellen Betrieb der VMs herangezogen. Hinzu kommen Sicherheitsgefahren durch Lücken in den virtualisierten Betriebssystemen, Speicherplatz, den die VMs belegen, und die zu sichernde Datenmenge. Zudem muss eine IT-Organisation virtuelle Betriebssysteme mit Sicherheitsupdates versorgen und sie verwalten.

Container bieten hier den Vorteil, dass sie sich die meisten Betriebssystemdateien mit dem Container-Host teilen, also mit dem Server, der die Container bereitstellt: Das Betriebssystem in Docker-Containern und die notwendigen Ressourcen sind auf dem Container-Host verfügbar. Wird ein Container gestartet, muss er nicht das ganze Betriebssystem booten, Bibliotheken laden und Ressourcen für das eigene Betriebssystem zur Verfügung stellen.

Leichtgewichtige Container, einfachere Verwaltung

Container sind somit wesentlich kleiner, sicherer und leichter zu verwalten. Außerdem lassen sie sich schneller über Images bereitstellen. IT-Organisationen können deutlich mehr Container auf einem Host zur Verfügung stellen als VMs. Durch die höhere Dichte an Containern werden die Ressourcen der Hosts besser genutzt. Darüber hinaus kann man mit Containern zu 100 Prozent über APIs und Scripting arbeiten – das Stichwort lautet hier „Infrastructure as Code“: Benutzer programmieren Applikationen, Deployment, Anzahl der Instanzen sowie alle anderen Elemente. Netzwerke, Load Balancer und Firewalls werden dann automatisch aufgesetzt, verteilt und konfiguriert. Derzeit wird vor allem daran gearbeitet, Best Practices und Management-Verfahren für den sicheren und effizienten Einsatz von Containern zu analysieren. Denn in erster Linie einfacheres Handling und Management von Containern wird zur weiteren Verbreitung der Technik in den Unternehmen beitragen.

Kann der Container den Hypervisor ersetzen?

Eine weitere Frage lautet, ob Container auf diese Weise langfristig die Hypervisor-basierte Virtualisierung ersetzen werden. Befinden wir uns schon in einer Phase der „Postvirtualisierung“? Eines ist klar: Container starten schneller als VMs, erzeugen einen geringeren Overhead und vereinfachen die Portabilität von Applikationen durch ihre Unabhängigkeit. Zudem ermöglichen sie eine deutlich höhere Automatisierbarkeit von Infrastrukturen und Testszenarien.

Gerade die letzten Punkte beschreiben Vorteile, die die Hypervisoren bisher nicht vollständig geliefert haben. Bis heute gibt es bei Hybrid- und Multi-Cloud-Szenarien keine durchdachten Strategien, wie diese Modelle über verschiedene Hypervisor-Techniken hinweg reibungslos funktionieren können. Aus diesem Grund wählen die meisten Cloud-Betreiber für eine Hybrid Cloud immer den gleichen Anbieter oder sie wählen Provider, die den gleichen Hypervisor einsetzen.

Schematische Darstellung der klassischen Virtualisierung. Bild: DARZ

Um an dieser Stelle der Abhängigkeit von einem einzelnen Anbieter (Vendor Lock-in) aus dem Weg zu gehen, gibt es nur eine tragfähige Lösung: Die Anwender müssen die Cloud mit quelloffenen Lösungen wie Openstack selbst zusammenzustellen. Es bedeutet jedoch einen enormen Aufwand, sich in die komplexe Technik und einzelnen Module einzuarbeiten. Diesen Aufwand wollen Unternehmen nicht zusätzlich stemmen und sollten deshalb hier auf erfahrene Partner setzen.

In solch einem Kontext spielen Container ihre Stärken voll aus. Denn bei ihnen reicht beispielsweise zumeist ein Docker-Agent als Bindeglied zum Host-Betriebssystem. Hypervisor und Provider sind hierbei unerheblich. Das Betriebssystem muss lediglich einfachsten Anforderungen genügen. Zudem existieren heute Tools wie Rancher, Mesosphere oder Panamax, um die Verwaltung von Containern zu automatisieren und zu vereinfachen. Auf diese Weise ist eine bedarfsgerechte Verteilung auf Hosts für eine Vielzahl von Containern unter Beachtung von Abhängigkeiten weitaus einfacher als die Administration virtueller Maschinen. Denn Container sind im Gegensatz zu VMs viel mobiler: In Container verpackte Applikationen lassen sich zwischen den unterschiedlichen Plattformen oder Providern bei Hybrid- oder Multi-Cloud-Szenarien deutlich einfacher hin und her bewegen.

Containertechnologie steht noch am Anfang

Es wäre jedoch verfrüht, das Ende der klassischen Hypervisor-basierten Virtualisierung zu erklären. Diese hat nach wie vor einige Vorteile zu bieten. Hierzu gehört eine hochverfügbare Infrastruktur, die wiederum Container in dieser Form noch nicht nachbilden. Container selbst benutzen virtualisierte Server als hochverfügbare Laufzeitumgebungen. Damit ergänzen sich beide Techniken hervorragend. Zudem existieren Applikationen und Dienste, die sich heute noch nicht für eine containerbasierte Virtualisierung eignen: Container spielen ihre Stärken bei Micro-Services aus, während monolithisch entwickelte, komplexe Applikationen in einer VM besser aufgehoben sind.

Auch Server mit Datenpersistenz – hierzu zählen zum Beispiel Datenbanken, Sessions und Business Logic – werden optimalerweise als klassische virtuelle Server realisiert. Denn im Normalfall gehen mit dem Betriebsende eines Containers auch die integrierten Daten verloren.

Schematische Darstellung der Containerization. Bild: DARZ

Ein weiterer nennenswerter Faktor der klassischen Virtualisierung ist die Sicherheit. Denn die Virtualisierung bietet einen hohen Grad an Isolation der einzelnen virtuellen Maschinen. Alle Hardwareressourcen werden getrennt virtualisiert und auch unabhängig zur Verfügung gestellt. Aus diesem Grund kann Malware oder ein Angriff im Normalfall auch nur eine einzelne VM kompromittieren. Die Sicherheit von Containerumgebungen ist geringer ausgeprägt, weil Container einen gemeinsamen Betriebssystem-Kernel miteinander teilen und klassisch mit hohen Zugriffsrechten ausgestattet sind. Daher bringen Angriffe und Malware-Vorfälle ein höheres Sicherheitsrisiko mit sich, den darunterliegenden Container-Host sowie auch andere Container in Mitleidenschaft zu ziehen.

Die Anwendung entscheidet

Container sind heute vor allem als gute Ergänzung zur bekannten Hypervisor-basierten Virtualisierungsumgebung zu sehen. Beispielsweise für Cloud Provider ist es wichtig, sich intensiv mit den Potenzialen und Anwendungsoptionen von Containern zu beschäftigen. Auf lange Sicht gesehen wird es jedoch eine teilweise Postvirtualisierung geben. Diese geht aber vom Cloud-Einsatz selbst aus, denn in absehbarer Zeit werden Unternehmen keine eigenen Server mehr besitzen. Sie werden komplette Geschäftsprozesse aus der Cloud heraus zusammenstellen. Allein die Cloud Provider verwenden in diesem Szenario noch Server-Lösungen. Hier ergeben sich dann die Nischen für verschiedenste Virtualisierungstechnologien.

Lars Göbel ist Leiter Vertrieb und IT-Services beim Full-IT-Service-Provider DARZ in Darmstadt ().