Stärken und Schwächen von Docker und den Alternativen

Container-Technik: Docker & Co.

| Autor / Redakteur: Filipe Pereira Martins und Anna Kobylinska / Ulrike Ostler

In Containern lebt die Anwendung mit ihren Abhängigkeiten; die Granularität ermöglicht eine größere Flexibilität bei der Anwendungsgestaltung, zusammen mit DevOPs-Methoden eine schnellere Entwicklung und Überarbeitung sowie eine bessere Auslastung der Systeme.
In Containern lebt die Anwendung mit ihren Abhängigkeiten; die Granularität ermöglicht eine größere Flexibilität bei der Anwendungsgestaltung, zusammen mit DevOPs-Methoden eine schnellere Entwicklung und Überarbeitung sowie eine bessere Auslastung der Systeme. (Bild: M. Johannsen/ Fotolia.com)

In nur zwei Jahren hat Docker das Datencenter im Sturm erobert. Portable, systemagnostische Anwendungsvirtualisierung mit einer um bis zu 80 Prozent höheren Dichte gegenüber Hypervisor-gestützten VMs macht schnell von sich reden. Alternative Container-Technologien ließen nicht lange auf sich warten. Inzwischen donnert es aber auch scharfe Kritik gegen Docker. Was steckt hinter der Container-Revolution.

Container-Frameworks wie Docker erleichtern das Aufsetzen von portablen Anwendungsausführungsumgebungen und die Inbetriebnahme von virtualisierten Anwendungen und ermöglichen eine effizientere Nutzung der vorhandenen Ressourcen. Bei Docker (alter Codename: „dotCloud“) handelt es sich um ein Framework zur Bereitstellung von Anwendungen in isolierten Laufzeitumgebungen. Es beinhaltet eine quelloffene Engine zum Erzeugen autarker Container für verteilte Applikationen, eine portable Runtime und eine Orchestrierungsplattform für Container-übergreifende Anwendungen.

Orchestrierung von Docker-Containern: ein Belastbarkeitstest von Google Kubernetes auf Microsoft Azure mit dem Webserver NGINX.
Orchestrierung von Docker-Containern: ein Belastbarkeitstest von Google Kubernetes auf Microsoft Azure mit dem Webserver NGINX. (Bild: Microsoft)

Was Docker von alternativen Lösungen unterscheidet, ist die einfache Portabilität der Laufzeitumgebung. Docker unterstützt LXC (Linux Containers) als einen von mehreren Laufzeittreibern für autarke Container.

Die beachtliche Portabilität von Docker hat sich in einer bemerkenswerten Popularität reflektiert: Bis Ende 2014 konnte das Framework 100 Millionen Downloads verzeichnen und verweist auf satte 85.000 „dockerisierte“ Anwendungen.

Container-Virtualisierung ist an sich eigentlich nichts Neues. Linux bietet eine eigene Virtualisierungsumgebung auf der Betriebssystemebene mit der Bezeichnung „LXC“ (Linux Containers mit Unterstützung für Portabilität zwischen Distributionen). Ein ähnliches Konzept auf FreeBSD nennt sich „Jails“. Auf Solaris/OpenSolaris gibt es schließlich die so genannten Zonen („Zones“).

Container-Technik und Hypervisor-Virtualisierung im Vergleich

Hypervisor-gestützte VM-Virtualisierung und Container-basierte Anwendungsvirtualisierung liegen vom Konzept her wie Tag und Nacht auseinander. Bei der Hypervisor-gestützten Virtualisierung wie sie beispielsweise in KVM (Kernel-based Virtual Machine) implementiert wurde verfügen die einzelnen VM-Instanzen über eigene, voneinander unabhängige Kernel, die alle auf dem so genannten Hypervisor aufsetzen.

Ergänzendes zum Thema
 
Link-Sammlung

Dieser Ansatz erhöht die Sicherheit durch eine lückenlose Trennung der VMs, erschwert jedoch wesentlich ihre Interoperabilität. Hypervisor-gestützte Virtualisierungslösungen bieten unter anderem VMware, Citrix und Microsoft an.

Container-Virtualisierung auf der Basis von LXC ermöglicht das Ausführen von einzelnen Anwendungen in einem Sandkasten der jeweiligen Laufzeitumgebung direkt auf dem Kernel des Host-Systems, also ohne einen Hypervisor. LXC nutzt Kernel-Features wie Kontrollgruppen („cgroups“) und Namensräume, um die Container und die darin eingeschlossenen Prozesse voneinander abzugrenzen, so dass sie auf einen gemeinsamen OS-Unterbau kollisionsfrei zugreifen können.

Auslastung der Systemressourcen

Der Ansatz verbessert die Auslastung vorhandener Systemressourcen und damit die Performance der Anwendungen gegenüber einem Hypervisor. Der LXC-Ansatz hat jedoch nach wie vor unter anderem den Nachteil, dass sich systemweite Änderungen wie Updates von dem Host-System auf die Container propagieren.

Container-Virtualisierung kann allerdings gravierende Sicherheitslücken eröffnen. So liefen LXC-Container bis Februar 2014 zwangsweise mit Root-Rechten des Host-Systems; inzwischen lassen sie sich auch im Userspace ausführen. (Der Docker-Daemon benötigt im Übrigen nach wie vor Root-Rechte.)

Ergänzendes zum Thema
 
Das Fazit der Autoren:

Der LXC-Ansatz kommt im Hinblick auf die Portabilität eines Deployments deutlich zu kurz: Es isoliert nur einzelne Prozesse in einem Kernel-spezifischen Sandkasten und erschwert oder verhindert gar die Übertragung der Container auf andere Hosts. Abhilfe schaffen Lösungen wie Docker schaffen.

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Kommentar abschicken

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 43246015 / Middleware)