Rechenzentren werden zu Container-Häfen

7. September 2015, 11:46
  • innovation
  • docker
  • technologien
image

Container sind der neue IT-Hype. Was macht diese virtuellen Applikations-Boxen plötzlich so begehrenswert?

Container sind der neue IT-Hype. Alle Anbieter sind inzwischen auf diesen Zug aufgesprungen. Dabei ist die Technologie schon einige Jahre alt. Doch erst jetzt erobern Container auf breiter Front die Rechenzentren. Was macht diese virtuellen Applikations-Boxen plötzlich so begehrenswert?
Kaum eine Woche vergeht, ohne dass nicht mindestens ein IT-Anbieter etwas ankündigt, das in irgendeiner Form im Bereich von Containern angesiedelt ist. Jüngstes Beispiel ist der Virtualisierungs-Spezialist VMware, der auf seiner Hausmesse VMworld eine Vorschau auf vSphere Integrated Containers und die Photon Plattform gab. Beides dient dem besseren managen von Container-Farmen. In der Woche davor fand der OpenStack-Summit in San Jose statt, bei dem sich nahezu alle Präsentationen, Exponate und Randgespräche ebenfalls nur um das Thema Container drehten. Einigkeit herrschte unter den Kongress-Teilnehmern, dass Docker mit rund 90 Prozent den Löwenanteil im Container-Markt hält – und das, obwohl Docker bei weitem nicht der erste war, der mit Tools für Container-Lösungen auf den Markt kam. Die ersten grossen Markterfolge im Container-Geschäft verzeichnete Parallels, das schon im Jahr 2000 unter dem Produktnamen ASPcomplete eine Vorabversion von Virtuozzo vorstellte. Sun folgte vier Jahre später mit Solaris Container und 2007 brachte HP seine UX-Container-Version heraus. Dass diese, und die vielen andere Container-Lösungen, nicht den stürmischen Erfolg für sich verbuchen konnten, den Docker jetzt erzielt, liegt nur an wenigen kleinen Unterschieden – die aber eine sehr grosse Wirkung haben.
Container und Virtual Machines
Um diese zu erkennen, muss man ein wenig weiter ausholen. Container gleichen im weitesten Sinne einer Virtual Machine (VM). VMs sind bekanntermassen ein Image dessen, was auf einem Server lauffähig ist. Die Virtualisierung entsteht dadurch, dass ein Hypervisor mehrere solche Images verwaltet und damit der physische Server besser genutzt werden kann. Diese VMs werden häufig auch OS-Container (OSC) genannt. Sie können wie die VMs auf allen kompatiblen Hardware-Systemen laufen, die vom eingebundenen Betriebssystem ohne Anpassungen unterstützt werden. Dieser Vorteil ist auch gleichzeitig der grösste Nachteil, denn da ein VM-Image komplett alles enthält, was zum Ablauf erforderlich ist, sind diese Dateien normalerweise sehr gross. Viele Anwendungen, die nur einfache Ein- und Ausgaben ausführen sind wesentlich kleiner als der zugehörige System-Overhead. Laut Angaben von Parallels gibt es viele VMs, bei denen der Systemoverhead 99 Prozent ausmacht.
Und dann gibt es die zweite Container-Kategorie, die sogenannten Applikations-Container (AC), bei denen nicht das gesamte Paket aus Anwendung, Services und OS gebündelt wird, sondern nur Teile davon. Vor allem wird das Betriebssystem ausgekoppelt. Das heisst, es werden viele Container für das gleiche Betriebssystem erstellt, die dann ihrerseits kein OS mehr enthalten müssen. Damit benötigen sie zwar auch einen Hypervisor, doch die zugehörigen Image-Dateien sind viel kleiner weil der Systemoverhead wesentlich geringer ist, als bei einer VM. Verschiedene Datenblätter sprechen von einer Volumenreduktion um bis 90 Prozent, wenn Applikationen in einen Container statt in eine VM gepackt werden. Folglich erlauben Container eine bessere Ausnutzung des Servers oder der VM sowie ein deutlich schnelleres Swapping der Images. Letzteres ist vor allem dann von Bedeutung wenn mehr als Tausend oder gar über Zehntausend Container parallel betrieben werden. Damit ist klar, dass ACs kein Ersatz für Virtualisierung sind. Im Gegenteil: ACs können sowohl mehrere VMs enthalten oder auch nur Teil einer VM sein. Sogar komplexe Hadoop-Cluster lassen sich als Container bündeln. Für all diese Anwendungen gibt es in der Linux-Welt schon lange entsprechende Tools und Features, wie LXC, AppArmor und Chroots, die eine solche Architektur unterstützen.
Schwächen der Container-Technologie
Dies sind die Basisvorzüge von Containern, die es bereits seit vielen Jahren gibt. Doch diese Technologie hatte bislang auch gravierende Schwächen. Beispielsweise lassen sich Container bislang nur für Linux anlegen (Microsoft hat den Support von Windows-Containern für Server 2016 angekündigt). Ausserdem müssen alle Applikations-Container exakt dasselbe Betriebssystem nutzen, was bei den vielen verschiedenen Linux-Versionen zum Problem werden kann. Doch der grösste Mangel war bislang der, dass es auch bei den Containern nur eine Image-Ebene gab, damit mussten auch bei den Applikations-Containern viele Services und Komponenten immer wieder mit eingebunden werden. Wenn also beispielsweise eine Anwendung einen speziellen I/O-Service nutzt und diese Anwendung in einen Container gebündelt ist, dann ist auch dieser I/O-Service mit enthalten. Wird dieser Container tausendmal parallel gestartet, dann ist auch dieser Service tausendmal geladen – obwohl er sich nicht voneinander unterscheidet.
Vereinfachte Produktion von Containern
Hierfür gibt es heute eine bessere Lösung. So erlauben moderne Container-Management-Systeme das Erstellen von Container-Hierarchien. Das heisst, ein Container sagt dem Hypervisor welchen Parent-Container er benötigt und er selbst enthält nur die Bits, in denen er sich vom Parent-Container unterscheidet. Das manuelle Anlegen dieser Strukturen ist jedoch sehr komplex. Erst mit der Automatisierung dieser Topologie können diese Features sinnvoll genutzt werden. Hier kommt die Bedeutung von Docker ins Spiel. Mit Docker lassen sich Container sehr effizient anlegen und mit einem einzigen Kommando starten – egal wieviel Komponenten und Services davon mitbetroffen sind.
Diese wesentlich vereinfachte Container-Generierung und -Nutzung erlaubt weitere gravierende Differenzierungen bei den Anwendungen. Beispielsweise das Anlegen von extrem schlanken Mikro-Services bei denen ein Entwickler nur kleinste Teile eines Services in einen Container bündelt, womit die Infrastruktur-Nutzung weiter verbessert werden kann. Ausserdem erlaubt diese mehr granulare Struktur der Container eine bessere Skalierung, ein vereinfachtes Management und eine höhere Sicherheit. Auch das Problem der vielen Linux-Versionen lässt sich dadurch mildern, in dem man das genutzte Linux-System in den eigentlichen Kernel und in die jeweils erforderlichen Zusatz-Bibliotheken und I/O-Funktionen auftrennt, die dann in separate Container gebündelt werden.
Soweit die Vorteile bei der Infrastruktur und der Run-Time-Umgebung. Doch Container erfreuen sich auch einer zunehmenden Beliebtheit bei den Software-Entwicklern. Das liegt daran, dass Container über einen hohen Grad an Portabilität verfügen, weil sie nur das gleiche Betriebssystem benötigen. So kann man beispielsweise eine neue Anwendung auf einem (Linux-) Laptop entwickeln, sie anschliessend in einen Container binden und diesen von dort aus sofort lauffähig in jede Test- oder Produktions-Umgebung verschieben.
Verloren und nie wiedergefunden
Aber die neuen Möglichkeiten schaffen auch neue Problemzonen. Genauso wie beim Aufkommen der VMs besteht jetzt die Gefahr einer unkontrollierten Flutwelle an Containern, die "vergessen" werden, die unnötig für ewig laufen oder die irgendwo abgelegt werden, wo man sie nie wiederfindet. Um dieses zu vermeiden, haben sich verschiedene Monitor- und Management-Tools im Markt etabliert. Die bekanntesten sind Docker Swarm, Mesos und Kubernetes.
Point and Click
Docker gilt als Pionier moderner Containerisierung. Deren Systeme bieten eine einfache Möglichkeit, um Anwendungen und deren Abhängigkeiten in einen Container zu packen. Für das Erstellen und Managen stehen die Tools Machine, Compose und Swarm zur Verfügung. Swarm erlaubt das native Clustern von Containern und es bietet eine Kontroll- und Übersichts-Konsole für alle Container. Apaches Mesos eignet sich vorwiegend für das Anlegen von sehr grossen Container-Farmen. Zusammen mit dem Marathon-System erlaubt es das Scheduling von allen Jobs. Und Kubernetes wurde ursprünglich von Google erstellt und ist jetzt ein Open-Source-Tool zur Orchestrierung von Docker-Containern. Es organisiert das Scheduling von Nodes in einem Compute-Cluster und erlaubt ein sehr ausgefeiltes Load-Balancing. Dank des auf OpenStack spezialisierten Anbieters Mirantis kann das Kubernetes Cluster Management Framework jetzt auch im Rahmen der OpenStack-Familie eingesetzt werden. So kann Kubernetes als Teil von OpenStack Murano genutzt werden. "Wir bieten jetzt eine einfache Point-und-Click-Lösung für die komplexen Aufgaben des Container-Managements; hierzu gehören insbesondere Automatisierung, Bereitstellung und Sicherheitsvorkehrungen", erläutert Mirantis‘ President Alex Freedland die neuen Nutzungsmöglichkeiten.
In der Praxis noch selten
Alle diese Management-Systeme werden zusammenfassend als "Container Orchestration Engines" (COE) bezeichnet. Doch trotz all der vielen Tools und Nutzungsvorteile sind die Anwendungen im Produktionsumfeld noch sehr gering. Einer der Referenten auf dem OpenStack-Summit fragte das Auditorium, wer bereits Container in der Produktion nutzt – nur eine Hand kam nach oben. Bei der zweiten Frage, wer experimentiert damit, gingen fast alle Arme nach oben. Die vorsichtige Nutzung liegt unter anderem daran, dass diese Technologie noch einige Grossbaustellen hat. Da gibt es zunächst die Sicherheit. Diese soll bei Containern deutlich geringer sein, als bei VMs. Das stimmt auch teilweise. Die Schwachstelle ist die gemeinsame Nutzung des Betriebssystems, das meistens Teil einer VM ist. "Die Zugriffsregeln für Container müssen sorgfältig definiert werden, sonst sind Sicherheitslücken unvermeidbar", sagt James Bottomley, CTO von Parallels, über dieses Problem. Seiner Meinung nach arbeiten alle Anbieter an diesem Problem. Ziel sei es, eine weitere automatische Isolation von Container und OS zu erzwingen. Eine weitere Baustelle ist die Standardisierung. Docker als Marktführer hat hier eine führende Rolle eingenommen und im Juni zusammen mit 20 weiteren Anbietern die "Open Container Initiative" gegründet. Hierzu hat Docker sein Format und sein Runtime-Tool runC gespendet. Beides gilt derzeit als Basis für die Ausarbeitung eines entsprechenden Standards. Doch wie bei allen Standardisierungen in der IT-Welt, so wird auch hier die aktuelle Entwicklung den Definitionen weit vorauseilen. (Harald Weiss)

Loading

Mehr zum Thema

image

3500 Antennen: Die SBB lässt von Ericsson ein neues Funknetz planen

Der schwedische Tech-Konzern soll auch die Strahlenbelastung der bahneigenen 5G-Infrastruktur berechnen.

publiziert am 7.10.2022 1
image

10 Tickets für die Startup Nights Winterthur zu gewinnen

Am 3. und 4. November findet in Winterthur der grösste Startup-Event der Schweiz statt. Inside IT verlost als Medienpartner 10 Tickets.

publiziert am 7.10.2022
image

Kapo Zürich kauft Unterwasser-Suchroboter

Der 300'000 Franken teure Roboter soll künftig nach vermissten Personen oder Gegenständen suchen.

publiziert am 6.10.2022 1
image

Swift schlägt zentrales Gateway für digitale Landeswährungen vor

Digitale Landeswährungen sind weltweit ein Thema für Zentralbanken. Swift glaubt, dass man sie relativ einfach über einen zentralen Hub vernetzen könnte.

publiziert am 5.10.2022