oatawa - stock.adobe.com
Die Evolution von Containern: Docker, Kubernetes und dann?
Container gibt es fast so lange wie VMs. Erst mit Docker und Kubernetes erfuhren diese jedoch breite Aufmerksamkeit von Entwicklern und Anbietern. Heute sind sie kaum wegzudenken.
Die rasante Entwicklung von Containern in den letzten zwei Jahrzehnten hat moderne IT-Infrastrukturen von Grund auf verändert – sie begann bereits vor dem Debüt von Docker im Jahr 2013.
Das Partitionieren mit virtuellen Maschinen (VMs) – das bis in die 1960er Jahre zurückreicht – ermöglicht es mehreren Benutzern, über jeweils eine einzige Anwendung zeitgleich auf die vollen Ressourcen eines Computers zuzugreifen. VMs prägten die IT-Landschaft für die nächsten Jahrzehnte. Die moderne VM dient einer Vielzahl von Zwecken, wie zum Beispiel der Installation mehrerer Betriebssysteme auf demselben Rechner, um mehrere Anwendungen mit verschiedenen Anforderungen an Betriebssysteme zu hosten.
Dann kam Chroot
Die Entwicklung von Containern machte 1979 mit der Entwicklung von chroot in Version 7 von Unix einen Sprung nach vorn. Chroot markierte den Beginn der Prozessisolation wie wir sie heute von Containern kennen: es schränkte den Datenzugriff einer Anwendung auf ein bestimmtes Verzeichnis – das Root-Verzeichnis – und seine Kinder ein. Ein Hauptvorteil der Trennung mit Chroot war die verbesserte Systemsicherheit, so dass eine isolierte Umgebung externe Systeme nicht gefährden konnte, wenn sie eine Schwachstelle hatte oder zum Opfer eines Angriffs wurde.
Die 2000er Jahre standen ganz im Zeichen der Entwicklung und Verfeinerung der Containertechnologie. Google führte 2003 Borg, ein internes Container-Cluster-Managementsystem ein. Es stützte sich auf die Isolationsmechanismen, die Linux bereits im Einsatz hatte.
In diesen frühen Tagen der Entwicklung von Containern war Sicherheit kein großes Thema. Jeder konnte sehen, was im Inneren des Rechners vor sich ging. Anwender konnten nachvollziehen, wer wie viel Speicher verbraucht und wie sie die Leistung des Systems verbessern konnten.
Diese Variante der Containertechnologie unterliegt jedoch einigen Einschränkungen. Dies führte zur Entwicklung von Prozesscontainern, die bereits 2004 zu Kontrollgruppen (cgroups) wurden. Cgroups stellten die Beziehungen zwischen Prozessen fest und schränkten den Benutzerzugriff auf bestimmte Aktivitäten und das verfügbare Speichervolumen ein.
Das cgroup-Konzept wurde im Januar 2008 fester Bestandteil des Linux-Kernels. Das führte zum Entstehen der Linux-Containertechnologie LXC. Kurz darauf trat das Konzept der Namensräume (Namespaces) auf den Plan. Ziel war es, eine Grundlage für die Sicherheit von Containernetzwerken zu schaffen, indem man die Aktivität eines Benutzers oder einer Gruppe vor anderen zu verbirgt.
Docker und Kubernetes
Mit Docker kam 2013 ein Programm mit einer einfach zu bedienenden GUI auf dem Markt, das Containertechnologie verpacken, bereitstellen und verwalten kann. Docker ist in der Lage, mehrere Anwendungen mit unterschiedlichen Betriebssystemanforderungen auf demselben Betriebssystem-Kernel in Containern auszuführen.
Für IT-Administratoren und Organisationen bedeutete dies, dass sie ihre Strukturen vereinfachen und Ressourcen einsparen konnten. Innerhalb eines Monats nach der ersten Testversion war Docker die Spielwiese von 10.000 Entwicklern. Bis zur Veröffentlichung von Docker 1.0 im Jahr 2014 wurde die Software bereits 2,75 Millionen Mal heruntergeladen. Ein Jahr später war die Zahl der Downloads auf 100 Millionen gewachsen.
Im Gegensatz zu VMs haben Container einen deutlich geringeren Ressourcenbedarf, lassen sich schneller an- und abschalten und erfordern weniger Overhead bei der Verwaltung. VMs müssen außerdem jeweils ein völlig unabhängiges Betriebssystem und andere Ressourcen beinhalten, während mehrere Container denselben Betriebssystem-Kernel teilen und einen Proxy verwenden, um sich mit Ressourcen verschiedener Quellen zu verbinden.
In der IT-Gemeinschaft gab es Bedenken und Zögern hinsichtlich der Sicherheit eines gemeinsam genutzten Betriebssystemkerns. Ein anfälliger Container könnte ohne die notwendigen Vorkehrungen an der Containertechnologie, ein ganzes Ökosystem anstecken.
Ein weiterer Kritikpunkt betraf den Mangel an Datenpersistenz. Diese ist jedoch für die große Mehrheit der Unternehmensanwendungen wichtig. Zudem gab es Sorgen bezüglich der Effizienz bei der Vernetzung sowie Probleme bei der Logistik für die Einhaltung von Vorschriften (Compliance) und die Verwaltung verteilter Anwendungen.
Die Containertechnologie feierte 2017 schließlich ihren großen Durchbruch. Unternehmen wie Pivotal, Rancher, AWS und sogar Docker haben nach und nach einen Spurwechsel vollzogen und unterstützen nun den Container-Scheduler und die Orchestrierungs-Tools von Kubernetes. Sie festigen die Position dieser Open-Source-Lösung als Standardtechnologie für die Containerorchestrierung.
Im April 2017 ermöglichte Microsoft die Ausführung von Linux-Containern auf Windows Server. Dies war eine wichtige Entwicklung für Microsoft-Kunden, die Anwendungen containerisieren, aber ihr bestehendes System mit diesen kompatibel halten wollten.
Containeranbieter haben im Laufe der Zeit die Sicherheits- und Verwaltungsprobleme mit Updates, Ergänzungen, Akquisitionen und Partnerschaften mit Erfolg in Angriff genommen. Das bedeutet natürlich nicht, dass Container im Jahr 2020 perfekt sind.
Das Cloud-Containermanagement, inklusive der notwendigen Überwachungs-, Protokollierungs- und Warnungstechnologie, ist ein großes Thema für Organisationen, die sich für Container entscheiden.
Container bieten für verteilte Anwendungen, insbesondere für Microservices, mehr Vorteile als für größere, monolithische Anwendungen. Jeder unabhängige Dienst kann mit Hilfe eines Orchestrator-Tools, wie zum Beispiel Kubernetes, vollständig enthalten und unabhängig von anderen skaliert werden, was den Ressourcen-Overhead bei Anwendungen mit weniger stark genutzten Funktionen reduziert.
Zu diesem Zweck bieten verschiedene Anbieter für Public und Private Clouds verwaltete Containerdienste an – in der Regel über Kubernetes – um die Bereitstellung von Containern in der Cloud effizienter, leichter skalierbar und für Administratoren leichter zugänglich zu machen. KI und Technologien für maschinelles Lernen gewinnen ebenfalls zunehmend an Interesse von Unternehmen auf der Suche nach einer Managementlösung für ihre Containersruktur.
Die Zukunft der Container
Die Entwicklung der Containertechnologie ist noch lange nicht abgeschlossen. Mirantis, ein Unternehmen für Cloud Computing, erwarb 2019 Docker Enterprise; Kubernetes hat seine Position als de-facto-Standard für die Containerorchestrierung gefestigt; und andere große Anbieter erwerben regelmäßig kleinere Start-ups, um ihre Toolchain-Angebote zu erweitern und Lücken mit spezialisierten Tools zu füllen.
Eine Diamanti-Umfrage unter mehr als 500 IT-Organisationen ergab, dass Sicherheit für Anwender nach wie vor die größte Herausforderung bei der Technologie ist, gefolgt von der Infrastrukturintegration. Sysdig stellte in seiner Umfrage zur Containernutzung einen Anstieg der Containerdichte von 2018 bis 2019 um 100 Prozent fest.
Sicher scheint also vor allem, dass die Verwendung von Containern eher noch zunehmen wird. Gartner prognostizierte 2018 einen Anstieg der Containernutzung in Unternehmen auf bis zu 50 Prozent im Jahr 2020 – mehr als doppelt so viel wie die 20 Prozent im Jahr 2017. Und Gartner prognostiziert, dass bis 2022 mehr als 75 Prozent der Unternehmen Container in der Produktion einsetzen werden.