Du hast deinen AdBlocker an?

Es wäre ein Traum, wenn du ihn für t3n.de deaktivierst. Wir zeigen dir gerne, wie das geht. Und natürlich erklären wir dir auch, warum uns das so wichtig ist. Digitales High-five, deine t3n-Redaktion

t3n 42

Docker: Was du über die Container-Technologie wissen musst

    Docker: Was du über die Container-Technologie wissen musst

Im Cloud-Zeitalter steigt der Wert einer Applikation mit ihrem Vernetzungs- und Verbreitungsgrad. Dies hat fundamentale Auswirkungen auf die Art und Weise, wie Anwendungen heute entwickelt, getestet und betrieben werden. Ausfallsicherheit und Business Continuity sind in diesem Kontext nur zwei Schlagworte, die es zu berücksichtigen gilt. In unserer Themenwoche Cloud und Hosting erläutern wir, dass es eine Technologie gibt, die dabei immer weiter nach oben auf der Agenda von Entwicklern aber auch CTOs und IT-Architekten rückt: Container. Neben CoreOS ist Docker hierfür derzeit die bevorzugte Wahl.

Themenwoche Cloud und Hosting

Software wurde traditionell für den Einsatz auf einem einzigen System entwickelt, unterliegt seit dem Einzug von Cloud-Technologien jedoch erheblichen Veränderungen. Skalierbarkeit, Hochverfügbarkeit und Portabilität sind die Top-Themen, mit denen sich CTOs und IT-Architekten seit geraumer Zeit beschäftigen müssen, um die technischen Erwartungen der Geschäftsseite zu erfüllen. Aber wie lässt sich eine Software über unterschiedliche Plattformen und Infrastrukturen „bewegen“, ohne dabei ständig an die jeweiligen Voraussetzungen für das Deployment und den Betrieb angepasst zu werden? Denn unterschiedliche Hardware- und Softwarekonfigurationen sowie Abhängigkeiten zu wechselnden Softwareversionen sorgen für eine stetig steigende Komplexität.

Eine Antwort bietet hierfür eine Methode, den die Transport-Industrie im Jahr 1956 geschaffen hat: Container als Transportmittel für eine Vielzahl unterschiedlicher Güter, um diese per LKW und Schiffen von einem Ort A an einen anderen Ort B zu verfrachten. Diesem Vorbild folgend wurde in den vergangenen Jahren ein ähnlicher Ansatz entwickelt, der nun immer stärker in der Anwendungsentwicklung Berücksichtigung findet: Docker, eine Technologie, die es seit dem Jahr 2013 ermöglicht, Applikationen zwischen verschiedenen Systemen zu portieren.

Docker ist ein Open-Source-Projekt zur automatisierten Bereitstellung von Applikationen, die in einem Container organisiert sind. Es nutzt hierzu die Eigenschaften des Linux-Kernel. Ressourcen wie Prozessor, RAM, Netzwerk oder Block-Speicher lassen sich so ohne den Start einer einzigen virtuellen Maschine voneinander isolieren. Weiterhin können Applikationen vollständig von der jeweiligen Umgebung inklusive der Prozesse, Dateisysteme oder des Netzwerks getrennt und damit autonom betrieben werden. Mit dem Aufheben von externen Abhängigkeiten lassen sich Applikationen autonom über Systeme hinweg verschieben. Docker kapselt dafür die eigentliche Anwendung und ihre notwendigen Abhängigkeiten wie Bibliotheken in einen virtuellen Container, welcher dann auf jedem beliebigen Linux- und Windows-System ausführbar ist. Dies erhöht den Portabilitätsgrad und die Flexibilität.

Während des Betriebs einer Applikation auf einer virtuellen Maschine wird neben der Applikation selbst eine Reihe weiterer Ressourcen benötigt, was zu einem enormen Overhead und großen Abhängigkeiten führt. Dazu gehören die notwendigen Bibliotheken, ein vollwertiges Betriebssystem und gegebenenfalls weitere Dienste und Applikationen. Ein Docker-Container hingegen umfasst nur die eigentliche Applikation sowie die dazugehörigen Abhängigkeiten. Dieser wird als isolierter Prozess auf dem Host-Betriebssystem ausgeführt und teilt sich den Linux Kernel mit anderen Docker-Containern. Durch die strikte Isolation können mehrere Container auf dieselben Kernel-Ressourcen zugreifen. Für jeden Container lässt sich dabei exakt definieren, wie viele Ressourcen (Prozessor, RAM, Bandbreite) ihm zur Verfügung stehen.

Für den Betrieb einer Applikation auf einer virtuellen Maschine werden neben der Applikation auch eine Reihe weiterer Ressourcen benötigt, was zu großen Abhängigkeiten und einem sehr unflexiblen Handling für den Admin führen kann.
Für den Betrieb einer Applikation auf einer virtuellen Maschine werden neben der Applikation auch eine Reihe weiterer Ressourcen benötigt, was zu großen Abhängigkeiten und einem sehr unflexiblen Handling für den Admin führen kann.

Ein Docker-Container umfasst nur die eigentliche Applikation sowie die dazugehörigen Abhängigkeiten. Dieser wird als isolierter Prozess auf dem Betriebssystem des Hosts ausgeführt.
Ein Docker-Container umfasst nur die eigentliche Applikation sowie die dazugehörigen Abhängigkeiten. Dieser wird als isolierter Prozess auf dem Betriebssystem des Hosts ausgeführt.

Wofür lässt sich Docker einsetzen?

Für die Container-Virtualisierung mit Docker bieten sich verschiedene Einsatzmöglichkeiten, die für die tägliche Entwicklung und im Bereich DevOps Vorteile bieten:

  • Für die Offline-Entwicklung auf einem lokalen System, um dieselbe Umgebung zu nutzen, wie es auf dem Produktivserver der Fall ist
  • Für Continuous Integration und Continuous Delivery
  • Für die Optimierung des Entwicklungsprozesses (Entwicklung > Test > QA > Produktion)
  • Für das verteilte „Collaborative Development“ im Team
  • Zur Umsetzung von Multi-Cloud-Szenarien (Umziehen/Betreiben der gleichen Applikation auf mehreren Cloud-Plattformen)
  • Innerhalb von Cloud-IaaS-Marktplätzen, um Workloads zwischen den verschiedenen Anbieter-Infrastrukturen je nach Preis oder anderer Parameter zu bewegen
  • Für die Umsetzung des „Immutable Infrastructure Pattern“ und Blue-Green-Deployments

Docker in der Praxis

Nachdem Docker unter Entwicklern zunehmend an Beliebtheit gewonnen hat, zieht die Container-Technologie nun auch verstärkt in die Enterprise-IT ein. CIOs und CTOs verfolgen damit das Ziel, ihren Entwicklern mehr Bequemlichkeit und Kontrolle bei der Anwendungsentwicklung zu ermöglichen und die Verfügbarkeit ihrer Applikationen zu erhöhen – wenn zum Beispiel ein Container ausfällt oder eine Applikation ausgetauscht werden muss. Im selben Zug sehen IT-Entscheider in Container-Strategien die Möglichkeit, ihre Microservice-Architekturen innerhalb großer verteilter Infrastrukturen in den Griff zu bekommen, indem jeder Microservice seine eigene Container-Strategie erhält, mit der er sich verwalten lässt.

Große Unternehmen setzen dabei bevorzugt auf Private Cluster (2 bis 5 Maschinen), um die eigenen Anforderungen hinsichtlich Sicherheit und Performance umzusetzen. Hierbei verfolgen sie zwei Strategien: On-Premise-Deployments und Docker-Hosting-Services. Die On-Premise-Deployments werden dabei vornehmlich auf Bare Metal (physikalische Maschinen) zusammen mit der Open-Stack-Cloud-Software aufgebaut, um von dem Freiheitsgrad der Open-Source-Technologie zu profitieren.

Die größte Herausforderung, der sich IT-Entscheider ausgesetzt sehen, ist die Tatsache, dass derzeit nur wenige fertige Lösungen existieren, die ohne Anpassung in den gewünschten IT-Betrieb passen. Zu einem der wenigen Anbieter gehört GiantSwarm aus Deutschland, der neben einem gehosteten Service ebenfalls eine On-Premise-Variante inklusive Infrastrukturberatung im Portfolio hat, mit der ein fertiger Stack vorgegeben wird.

Marktüberblick: Docker-Hosting-Anbieter

Eine Alternative zur eigenen On-Premise-Container-Infrastruktur sind Docker-Hosting-Anbieter, die den direkten Betrieb und das Deployment von Docker-Anwendungscontainern ermöglichen, ohne dass man selbst für den Betrieb der dafür notwendigen Container-Infrastruktur sorgen muss. Neben der Docker-Plattform an sich, auf die bereits namhafte Unternehmen wie Paypal, Uber, Spotify, ING oder BBC News setzen, zählen des Weiteren:

GiantSwarm

Das Startup GiantSwarm hat eine Microservice-Infrastruktur auf Basis der Docker-Technologie entwickelt, die Entwicklern das Deployment von Applikationen innerhalb von Docker-Containern vereinfacht (siehe Seite 142). Hierzu wird die Architektur in einer Konfigurationsdatei im JSON-Format hinterlegt, anhand welcher die Infrastruktur samt ihren Abhängigkeiten anschließend aufgespannt wird. GiantSwarm sorgt hierbei dafür, dass die Applikationen laufen und verknüpft automatische sämtliche Services miteinander.

Das Unternehmen aus Köln hat nicht nur einen eigenen Hosting-Service im Angebot, sondern berät vor allem große Unternehmen beim Aufbau und Betrieb von On-Premise-Docker-Installationen im Kontext agiler Software-Entwicklung und DevOps-Prozessen. Kunden, die GiantSwarm bereits überzeugen konnte, sind neben internationalen Großunternehmen das deutsche Startup leanIX und die Entwicklerprofis von codecentric.

ProfitBricks

Der Zugang zur Docker-Hosting-Plattform von ProfitBricks ist derzeit über eine Early Access Invite möglich. ProfitBricks adressiert mit seiner Docker-Plattform das „Noisy Neighbour“-Problem, ein Phänom innerhalb von geteilten Infrastrukturen, bei dem eine virtuelle Maschine eine überproportionale Menge an Ressourcen in Anspruch nimmt. Nutzer der Docker-Plattform erhalten somit dedizierte CPU-Cores und RAM für ihre Docker-Hosts, die bei Bedarf automatisch skalieren. Das bedeutet, dass die dedizierten Ressourcen mit einer Autoscaling-Funktion ausgestattet sind und sich damit dem Bedarf der Docker-Container anpassen können.

Amazon EC2 Container Service (ECS)

Mit dem EC2 Container Service (ECS) lassen sich verteilte Anwendungen in Docker-Containern innerhalb eines Cluster bestehend aus EC2-Instanzen betreiben. Der Cluster wird vollständig von AWS verwaltet. Das Ressourcen-Management von AWS verteilt die Container innerhalb des Clusters auf Basis der Konfiguration des Speicher- und CPU-Verbrauchs. Damit stehen die notwendigen Ressourcen dort zur Verfügung, wo sie gerade benötigt werden. Anhand der AWS-APIs lassen sich die Anwendungen in den Docker-Containern starten und beenden sowie mit weiteren AWS-Services wie Elastic Load Balancing, Elastic Block Store Volumes und Identity-and-Access-Management-Rollen verbinden.

Microsoft Azure Container Service

Die Basis des Azure Container Service bilden die Open-Source-Technologien Docker und Apache Mesos. Das Management erfolgt über das Data-Center-Management-System Mesosphere DCOS. Microsoft will seinen Kunden damit die Möglichkeit geben, einen eigenen Mesos-Container-Cluster auf der Azure-Cloud-Infrastruktur aufzubauen, um darüber Applikationen über mehrere virtuelle Maschinen horizontal zu skalieren.

Der Service befindet sich bei Microsoft derzeit noch in der Entwicklung. Eine erste Preview ist gegen Ende 2015 zu erwarten. Allerdings werden zunächst nur Linux-Container unterstützt, die Unterstützung für Windows-Server erfolgt dann in 2016.

Docker gehört auf den Tisch von IT-Entscheidern

Nachdem die IT-Industrie über Jahre hinweg Container in Form von virtuellen Maschinen genutzt hat, um eine Abstraktionsebene zu den physikalischen Plattformen zu schaffen, ermöglichen es Technologien wie Docker nun, Container zwischen Plattformen zu verschieben. Genauer gesagt: Linux-Applikationen und Workloads zwischen mehreren Clouds zu bewegen, um damit die Portabilität zu verbessern. Im ersten Moment erscheint Docker damit als ein typisches Tool für Entwickler. Aus dem Blickwinkel eines CIOs handelt es sich allerdings klar um ein strategisches Werkzeug für die Optimierung von modernen Applikations-Deployments.

Docker hilft dabei, die Portabilität einer Anwendung sicherzustellen, die Verfügbarkeit zu erhöhen und das Gesamtrisiko zu minimieren. Von dieser neuen Form der Portabilität können ebenfalls Cloud-Marktplätze und Cloud-Brokerage-Services wie Deutsche Börse Cloud Exchange (DBCE) profitieren, um ihren Kunden die Möglichkeit zu bieten, Applikationen zwischen den unterschiedlichen Anbietern je nach Bedarf zu verschieben.

Links und Literatur

  1. Microservice: Cloud- und IoT-Applikationen zwingen den…
  2. Docker
  3. GiantSwarm
  4. ProfitBricks
  5. Amazon EC2 Container Service
  6. Microsoft Azure Container Service

Finde einen Job, den du liebst

2 Reaktionen
Mike

Wer sich nicht um Server/VMs kümmern möchte, sondern einfach nur seine erstellten Container hosten will, sollte sich http://sloppy.io ansehen.

Antworten
grep

Hallo ...,

Docker ist schon eine feine Sache ... und in diesem Artikel wurde diesbezüglich ein betreffender Kontext zu den AWS (Amazon Web Services) gezogen, explizit zum ECS (EC2 Container Service) ... und dabei fällt mir (wieder) ein das Amazon seinerzeit (das Aufsetzen) bestimmte(r) TOR-Nodes erlaubte, gar (gewissermaßen) förderte ... doch nun in einem aktuellem (E-Mail-)Statement welches mir exklusiv vorliegt werden jegliche Art von sog. Open-Proxies als gegen deren AUP (Acceptable use policy) gewertet.

Das hat jetzt wenig bis garnix mit Docker und mehr mit Amazon und TOR zu tun ... ist mir aber im Zusammenhang mit Entwicklung(en) eine Herzensangelegenheit ... und insofern erwähnenswert.

Ciao, Sascha.

Antworten

Melde dich mit deinem t3n-Account an oder fülle die unteren Felder aus.

Abbrechen