Ökosystem Docker
Rund um die ContainerTechnik entstehen blühende Landschaften.
Knapp drei Jahre sind seit dem initialen Release von Docker vergangen. Wie in einem Rausch hat es die Open-SourceContainer-Technik innerhalb kürzester Zeit auf die Notizzettel von CTOs weltweit geschafft. Nur noch selten bleiben Docker-Container und deren Vorzüge in technischen Keynotes, Applikations-fokussierten Leitartikeln und in Beratungsmandaten unerwähnt.
Doch Docker ist inzwischen weit 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 sich dadurch selbst ein gewaltiges Ökosystem aus Tools und Lösungen geschaffen. Über 20.000 neue Open-Source-Projekte (Stand: Januar 2015) sind rund um Docker entstanden, darunter Benutzeroberflächen, Management-Frameworks und Monitoring-Tools.
Docker nimmt Fahrt auf
Bei Docker handelt es sich um eine Lösung, die sich für die automatisierte Bereitstellung von Applikationen, die in einem Container organisiert sind, einsetzen lässt. Docker nutzt hierzu die Eigenschaften des Linux-Kernels. Dabei werden Ressourcen wie Prozessor, RAM, Netzwerk oder Blockspeicher voneinander isoliert. Auf diese Weise lassen sich Applikationen
vollständig von der jeweiligen Umgebung inklusive der Prozesse, Dateisysteme oder des Netzes trennen und autonom betreiben. So können Applikationen autonom über Systeme hinweg verschoben werden. Docker kapselt die eigentliche Anwendung und ihre notwendigen Abhängigkeiten wie Bibliotheken in einem virtuellen Container, der sich dann auf jedem beliebigen Linux Server ausführen lässt (siehe auch „Docker in a Nutshell“, www.cowo. de/a/3218380).
Docker lässt sich über Schnittstellen mit allen führenden Infrastrukturumgebungen und -Tools integrieren, darunter Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform, IBM Bluemix, OpenStack Nova, Puppet, Salt, Chef und Ansible. Weiterhin werden die Platform-as-a-Service-(PaaS-) Systeme Cloud Foundry, OpenShift Origin und Apprenda unterstützt.
Die wachsende Bedeutung von Docker beziehungsweise Container-Technologien wird zudem durch die im Juni 2015 gegründete „Open Container Initiative“(OCI) unterstrichen. Unter Federführung der „Linux Foundation“hat sich ein Konsortium von Technologieführern gebildet. Hierzu gehören etwa AWS, Google, Mesosphere, Pivotal, Cisco, IBM, Microsoft, Intel, Red Hat, Oracle und VMware. Die Initiative hat es sich zur Aufgabe gemacht, gemeinsame Standards für Container, ihre Formate und Runtime-Umgebungen zu entwickeln und zu etablieren.
Eines bleibt jedoch festzuhalten. Mit dem Einsatz einer Container-Technik werden Applikationen erst einmal „nur“in eine portable Form verpackt, nämlich in Container. Dies reicht noch nicht aus, um eine komplexe, auf Microservice-Architekturen basierende Applikation oder gar eine große Applikationslandschaft zu verwalten. Hierfür sind mächtige ManagementTools und Entwicklungsplattformen notwendig, um etwa das Continuous Delivery sowie Konzepte wie DevOps zu unterstützen. Dieser Herausforderung ist eine Technologie wie Docker alleine nicht gewachsen. Vielmehr ist ein Ökosystem von Lösungen erforderlich, das sich diesen Themen widmet. Viele Tools rund um das Docker-oder Container-Universum haben sich im 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, Entwicklerplattformen und vieles mehr.
Marktüberblick: Das Docker-Ökosystem
Im Laufe der letzten knapp drei Jahre hat sich rund um Docker eine Community gebildet, die zu einem passablen Ökosystem geführt hat. Zu den bekanntesten und wichtigsten Tools und Lösungen zählen unter anderem:
1. Docker Toolbox: Im Februar 2015 hat Docker selbst eine Reihe von Orchestration-Tools veröffentlicht. Hierzu gehören bisher:
Docker Compose: Damit lassen sich MultiContainer-Applikationen mit allen ihren Abhängigkeiten innerhalb einer einzigen Datei definieren und anschließend mit einem einzigen Befehl ausrollen.
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 lässt eine Docker-Umgebung auf den lokalen Betriebssystemen für Macs und Windows ausführen und bietet eine grafische Benutzeroberfläche zur Verwaltung der Container.
Docker Engine ist die grundlegende Technikplattform für den Aufbau und Betrieb einer Docker-Container-Umgebung.
Docker Tutum ist ein Tool für die Bereitstellung und das Management von Container- Applikationen. Zum Leistungsumfang gehören ein Dashboard, Monitoring, Logging, Applikationshistorie etc. Weiterhin lassen sich darüber die Applikationen starten, stoppen und skalieren.
Docker Hub ist ein Cloud-basierter Service von Docker, mit dem sich Container-Applikationen und -Services entwickeln, ausrollen und verwalten lassen.
Docker Swarm stellt einen Cluster zur Verfügung, auf dem sich eine Gruppe aus Docker Engines zu einem einzigen virtuellen Docker Host zusammenfassen lassen.
2. Kubernetes ist ein Open-Source-DockerManagement-Tool, das von Google entwickelt wurde, um Docker-Container-Applikationen in einer Cluster-Umgebung zu verwalten. Hierzu gehören etwa die Kommunikation zwischen den Containern sowie die gleichmäßige Verteilung von Containern über den Cluster hinweg.
3. Mesosphere bezeichnet sich selbst als „Data Center Operating System“. Mesosphere bündelt hierzu jede Server-Art (physikalisch, virtuell) zu einem großen Pool von geteilten Ressourcen – einem Cluster. Anhand des „Docker Executor for Mesos“lassen sich innerhalb eines Mesosphere-Clusters ebenfalls Docker-Container betreiben.
4. 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 auch Docker-Container auf einer OpenStack-Infrastruktur betreiben.
5. Shipyard ist eine ebenfalls quelloffene Docker-Management-Lösung, mit der sich Docker-Ressourcen wie Container, Images, Hosts etc. über eine einzige zentrale Management-Oberfläche verwalten lassen.
6. Panamax ist ein Tool für die Entwicklung, das Bereitstellen und Teilen von Containerbasierten Anwendungen. Dazu gehört auch ein Open-Source-Applikations-Markplatz, der auf Github gehosted wird.
7. 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 als Bestandteil der Digital Infrastructure Platform
Container-Technologien sind zudem ein wichtiger Bestandteil der „Digital Infrastructure Platform“. Sie stehen repräsentativ für die „Dynamic IT“im technischen digitalen Abbild eines Unternehmens, von dem in Zukunft immer mehr Geschäftsmodelle unterstützt werden. Docker-Container helfen nicht nur dabei, Legacy-Applikationen und andere Workloads aus der „Static IT“in die „Dynamic IT“zu überführen, sondern sie verbessern auch:
D 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.
D 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 Netzschnittstellen kommunizieren. Damit lassen sich Applikationen voneinander isolieren, die auf demselben Host-System laufen.
D 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.
D Die Performance: Innerhalb einer Container-Architektur laufen alle Container auf einem einzigen Betriebssystem beziehungsweise dessen Kernel. Das bedeutet, dass sich auf jeder beliebigen Hardwareplattform 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 zehn 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.
D Das Change-Management: Docker-Container arbeiten ähnlich wie ein GIT Repository, bei dem Nutzer ihre Änderungen an DockerImages mitteilen. Da Container stark mit den Abhängigkeiten einer bestimmten Applikation integriert sind, kann jedes Update innerhalb der Container-Architektur zu Stabilitätsproblemen führen. Sollte es dazu kommen, müssen Administratoren reagieren und einen Rollback zu einer lauffähigen Version der Applikation und ihrer Abhängigkeiten anstoßen.