Container auf großer Fahrt: Das Docker-Ökosystem
Docker ist von einer interessanten Technologie zu einem Faktum auf der Agenda von CIOs und Entscheidern geworden. Crisp Research Analyst René Büst wirft einen eingehenden Blick auf das Ökosystem rund um die offene Container-Architektur.
Knapp drei Jahre sind seit dem initialen Release von “Docker” nun vergangen. Wie in einem Rausch hat es die Open-Source Container-Technologie innerhalb kürzester Zeit auf die Notizzettel von CTOs weltweit geschafft. Nur noch selten bleiben Docker-Container und deren Vorzüge in technischen Key Notes, Applikations-fokussierten Leitartikeln und während Beratungsmandaten unerwähnt. Den Grund dafür liefert Docker gleich selbst. Über 20.000 neue Open-Source-Projekte (Stand: Januar 2015) sind rund um Docker entstanden, darunter Benutzeroberflächen, Management Frameworks und Monitoring-Tools.
Doch Docker ist inzwischen bei weitem mehr als nur eine Plattform für das Applikations-Deployment innerhalb von virtualisierten Containern. Docker hat zu einer neuen Bewegung in der Open-Source-Gemeinde geführt und hat sich dadurch selbst ein eigenes riesiges Ökosystem von Tools und Lösungen geschaffen.
Docker nimmt Fahrt auf
Bei Docker handelt es sich um eine Open-Source-Lösung, die für die automatisierte Bereitstellung von Applikationen, die in einem Container organisiert sind, einsetzen lässt. Docker nutzt hierzu die Eigenschaften des Linux Kernels. Hierzu werden Ressourcen wie Prozessor, RAM, Netzwerk oder Block Speicher voneinander isoliert. Damit lassen sich Applikationen vollständig von der jeweiligen Umgebung inklusive der Prozesse, Dateisysteme oder des Netzwerks trennen und autonom betreiben, wodurch Applikationen autonom über Systeme hinweg verschieben werden können. Docker kapselt hierzu die eigentliche Anwendung und ihre notwendigen Abhängigkeiten wie Bibliotheken in einen virtuellen Container, welcher sich dann auf jedem beliebigen Linux Server ausführen lässt. Siehe auch: “Docker in a Nutshell”
Docker lässt sich mit Schnittstellen zu allen führenden Infrastruktur-Umgebungen und –Tools integrieren, darunter Amazon Web Services, Microsoft Azure, Google Cloud Platform, IBM Bluemix, OpenStack Nova, Puppet, Salt, Chef und Ansible. Weiterhin werden die Platform-as-a-Service Cloud Foundry, OpenShift Origin und Appendra unterstützt.
Die wachsende Bedeutung von Docker bzw. Container-Technologien wird weiterhin durch die im Juni 2015 gegründete “Open Container Initiative (OCI)” unterstrichen. Unter der Federführung der “Linux Foundation” hat sich ein Konsortium des Who is Who der Technologie-Führer unserer heutigen digitalen Gesellschaft gebildet. Hierzu gehören etwa Amazon Web Service, Google, Mesosphere, Pivotal, Cisco, IBM, Microsoft, Intel, RedHat, Oracle und VMware. Die Initiative hat es sich zur Aufgabe gemacht, gemeinsame Standards für Container, ihre Formate und Runtime-Umgebungen zu entwickeln und etablieren.
Eines muss man jedoch festhalten. Mit dem Einsatz einer Container-Technologie werden Applikationen erst einmal “nur” in eine portable Form verpackt, nämlich in Container. Dies reicht allerdings nicht aus, um eine komplexe, auf Microservice-Architekturen basierende Applikation bzw. eine große Applikationslandschaft zu verwalten. Hierfür sind mächtige Management-Tools und Entwicklungs-Plattformen notwendig, um u.a. das Continuous Delivery sowie Konzepte wie DevOps zu unterstützen. Dieser Herausforderung ist einer Technologie wie Docker alleine nicht gewachsen. Dazu ist ein Ökosystem von Lösungen erforderlich, die sich diesen Themen widmen. Viele Tools um das Docker- bzw. Container-Universum haben sich in dem Open Container Ecosystem (vormals Docker Ecosystem) versammelt. Hier finden sich Anwendungen, Services und Plattformen zu den Themen Sicherheit, Monitoring, Networking, Orchestration, Management, Container OS, Hosting und Service Provider, Entwickler-Tools, Entwickler-Plattformen usw.
Marktüberblick: Das Docker-Ökosystem
Im Laufe der letzten knapp drei Jahre hat sich um Docker eine rasant wachsende Community gebildet, die zu einem passablen Ökosystem geführt hat. Zu den bekanntesten und wichtigsten Tools und Lösungen zählen u.a.:
- Docker-Toolbox
Im Februar 2015 hat Docker selbst eine Reihe von Orchestration-Tools veröffentlicht. Hierzu gehören bisher:
- Docker Compose
Mit Docker Compose lassen sich Multi-Container-Applikationen mit allen ihren Abhängigkeiten innerhalb einer einzigen Datei definieren und anschließend mit einem einzigen Befehl ausrollen.
- Docker Machine
Docker Machine sorgt für die automatisierte Installation einer Docker-Umgebung auf dem lokalen Computer, der Infrastruktur eines Cloud-Anbieters oder der eigenen Rechenzentrumsinfrastruktur. Docker Machine stellt die Hosts bereit, installiert die Docker Engine und konfiguriert den Docker Client.
- Docker Kitematic
Docker Kitematic lässt eine Docker-Umgebung auf den lokalen Betriebssystemen für MAC und Windows ausführen und bietet eine graphische Benutzeroberfläche zur Verwaltung der Container.
- Docker Engine
Docker Engine ist die grundlegende Technologie-Plattform für den Aufbau und Betrieb einer Docker-Container-Umgebung.
- Docker Tutum
Docker Tutum ist ein Tool für die Bereitstellung und das Management von Container-Applikationen. Zum Leistungsumfang gehören ein Dashboard, Monitoring, Logging, Applikations-Historie usw. Weiterhin lassen sich darüber die Applikationen starten, stoppen und skalieren.
- Docker Hub
Docker Hub ist ein Cloud-basierter Service von Docker, mit dem sich Container-Applikationen und -Services entwickeln, ausrollen und verwalten lassen.
- Docker Swarm
Docker Swarm stellt einen Cluster zur Verfügung, auf dem sich eine Gruppe aus Docker Engines zu einem einzigen virtuellen Docker Host zusammenfassen lassen.
- Kubernetes
Kubernetes ist ein Open-Source Docker-Management-Tool, das von Google entwickelt wurde, um Docker-Container-Applikationen in einer Cluster-Umgebung zu verwalten. Hierzu gehören u.a. die Kommunikationen zwischen den Containern sowie eine gleichmäßige Verteilung von Containern über den Cluster hinweg.
- Mesosphere
Mesosphere bezeichnet sich selbst als das “Data Center Operating System”. Mesosphere bündelt hierzu jede Server-Art (physikalisch, virtuell) zu einem großen Pool von geteilten Ressourcen – einen Cluster. Anhand des “Docker executor for Mesos” lassen sich innerhalb eines Mesosphere-Clusters ebenfalls Docker-Container betreiben.
- OpenStack
OpenStack ist das führende Betriebssystem, wenn es um den Aufbau und Betrieb einer Open-Source-basierten Cloud-Infrastrukturlandschaft geht. Mit dem “Docker Driver” für “OpenStack Nova Compute” lassen sich ebenfalls Docker-Container auf einer OpenStack-Infrastruktur betreiben.
- Shipyard
Shipyard ist eine Open Source Docker Management Lösung, mit der sich Docker-Ressourcen wie Container, Images, Hosts usw. über eine einzige zentrale Management-Oberfläche verwalten lassen.
- Panamax
Panamax ist ein Tool für die Entwicklung, das Bereitstellen und Teilen von Container-baiserten Anwendungen. Dazu gehört ebenfalls ein Open-Source Applikations-Markplatz, der auf Github gehosted wird.
- Drone
Drone ist eine Continuous Integration Platform für Docker. Die Plattform lässt sich auf einem lokalen Laptop oder innerhalb einer eigenen IT-Infrastruktur betreiben.
Container-Technologien: Ein wichtiger Bestandteil der “Digital Infrastructure Platform”
Container-Technologien sind ein wichtiger Bestandteil der “Digital Infrastructure Platform” und stehen repräsentativ für die “Dynamic IT” im technischen digitalen Abbild eines Unternehmens, von dem in der Zukunft maßgeblich immer mehr Geschäftsmodelle unterstützt.
Docker-Container helfen nicht nur dabei, legacy Applikationen und andere Workloads aus der “Static IT” in die “Dynamic IT” zu überführen, sondern verbessern:
- Die Geschwindigkeit
Docker Container sind leichtgewichtiger als Hypervisor. Sie benötigen kein Gastbetriebssystem und auch der Ressourcenverbrauch für Speicher ist deutlich geringer. Zudem lassen sich Container schneller bereitstellen, da der Boot-Prozess, wie ihn eine virtuelle Maschine benötigt, entfällt.
- Die Sicherheit
Jeder Container verfügt über einen eigenen Netzwerk-Stack, dessen Ports und Zugriffsrechte sich unabhängig kontrollieren lassen. Applikationen, die in einem bestimmten Container laufen, können so konfiguriert werden, dass sie mit anderen Containern oder externen Systemen über bestimmte Netzwerkschnittstellen kommunizieren. Damit lassen sich Applikationen voneinander isolieren, die auf demselben Host-System laufen.
- Das Deployment
Docker-Container vereinfachen das Deployment, indem sie gemeinsam mit allen ihren Abhängigkeiten zu Bibliotheken, Betriebssystemen und anderen Ressourcen in einen einzelnen Container verpackt werden. Damit lässt sich ein Container auf jedem beliebigen System ohne Kompatibilitätsprobleme ausführen, auf dem Docker läuft.
- Die Performance
Innerhalb einer Container-Architektur laufen alle Container auf einem einzigen Betriebssystem bzw. dessen Kernel. Das bedeutet, dass sich auf jeder beliebigen Hardware-Plattform damit mehr Container betreiben lassen, als auf einer vergleichbaren virtuellen Umgebung virtuelle Maschinen laufen können. Ein physikalischer Server-Host der typischerweise Platz für 10 bis 100 virtuelle Maschinen bietet, kann etwa 100 bis 1000 Container beherbergen. Hinzu kommt, dass bei einer Container-Migration lediglich die Binaries der Applikation und deren Daten kopiert werden müssen, aber nicht das gesamte Gastbetriebssystem, wie es bei einer virtuellen Maschine der Fall ist.
- Das Changement
Docker-Container arbeiten ähnlich wie ein GIT Repsitory, bei dem Nutzer ihre Änderungen an Docker-Images mitteilen. Da Container sehr stark mit den Abhängigkeiten einer bestimmten Applikation integriert sind, kann jedes Update innerhalb der Container-Architektur zu Stabilitätsproblemen führen. Sollte es zu diesem Fall kommen, müssen Administratoren darauf reagieren und einen Rollback zu einer lauffähigen Version der Applikation und ihrer Abhängigkeiten machen.
Ein weiterer Grund für CTOs und technische Entscheider ist die Zukunftssicherheit von Docker. Dafür, dass Docker erst seit ein paar Jahren am Markt ist, wird es bereits von zahlreichen großen Unternehmen eingesetzt, darunter Uber, GE Appliance, Groupon, PayPal, ebay, ING, BBC, Spotify, Zalando oder Yandex. Weiterhin setzen große, eher proprietär agierende Technologie-Unternehmen, wie Google oder Microsoft auf Docker und haben die Container-Technologie bereits als Teil ihres Cloud-Angebots integriert.
Eine Technologie alleine ist jedoch kein Erfolgsgarant. Die Vergangenheit hat gezeigt, dass eine mächtige Community und ein Ökosystem um die Technologie herum einen entscheidenden Betrag zur breiten Adaption leisten. Docker ist das nächste Beispiel für so eine Erfolgsgeschichte.