Stärken und Schwächen von Docker und den Alternativen Container-Technik: Docker & Co.
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.
Anbieter zum Thema

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.
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.
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.)
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.
Artikelfiles und Artikellinks
(ID:43246015)