Multi-Tier-Applikationen mit Docker Compose, Machine und Swarm

Docker bietet drei nützliche Werkzeuge an, die den Umgang mit Containern vereinfachen. Durch ihre vielfältigen Optionen sind sie flexibel, erfordern aber einiges an Einarbeitung.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 30 Min.
Von
  • Mattias Giese
Inhaltsverzeichnis

Docker bietet drei nützliche Werkzeuge an, die den Umgang mit Containern vereinfachen. Durch ihre vielfältigen Optionen sind sie flexibel, erfordern aber einiges an Einarbeitung.

Docker ist seit geraumer Zeit in modernen IT-Infrastrukturen etabliert. Sei es als schnelle Möglichkeit, auf unterschiedlichen Linux-Plattformen Applikationen zu testen und auszuführen, oder sei es, um eine komplexe Applikation in einem einfach zu benutzenden Komplettpaket bereitzustellen. Docker punktet durch einfache Handhabung bei Entwicklern und Administratoren. Der Lernaufwand ist gering, die Anwendung intuitiv. Bei genauerer Beschäftigung mit Docker tauchen jedoch folgende Fragen rund um die Orchestrierung von Containern auf:

  • Wie stellt man eine Anwendung zur Verfügung, die aus mehreren Images wie Front- und Backend besteht, die miteinander zu verbinden sind?
  • Die Entwicklung und das Testen mit Docker ist praktisch, aber was ist mit der Produktion?
  • Wie gelangt eine dockerisierte Umgebung in die private oder öffentliche Cloud?
  • Wie skaliert der Service?

Neben öffentlichen Projekten wie Helios von Spotify und Kubernetes von Google hat sich auch das gleichnamige Unternehmen hinter Docker mit dem Problem der Orchestrierung beschäftigt. Um das Portfolio in diesem Bereich zu erweitern, haben sie unter anderem das Unternehmen Orchard eingekauft, dessen Werkzeug fig als Docker Compose zur Verfügung steht. Dazu kommen die Eigenentwicklungen Docker Machine und Docker Swarm. Erstere vereinfacht die Bereitstellung von Docker Hosts und letzere ermöglicht den Aufbau eines Clusters für Container. Dieser Artikel führt in die genannten Technologien ein und erklärt anhand mehrerer Beispiele, wie sich die Werkzeuge verbinden lassen.

Bevor Entwickler die Funktionen von Docker nutzen können, müssen sie zunächst den sogenannten Docker-Daemon aufbauen, der Benutzeranfragen entgegennimmt und Container erstellt beziehungsweise verwaltet. Alle populären Linux-Distributionen enthalten Docker im Lieferumfang. Anwender müssen im einfachsten Fall ein Paket installieren, den Dienst konfigurieren und starten. Bei Windows und OS X ist die Erstinstallation schwieriger. Dort müssen Nutzer zuerst eine virtuelle Maschine installieren, bevor sie Docker selbst einrichten. Falls sich der Docker-Daemon auf einem entfernten Host im Netzwerk befinden soll, wird es wesentlich komplexer: Anwender sollten dafür zumindest eine SSL-PKI zwecks Authentifizierung implementieren und Firewall-Regeln erzeugen. Projekte wie boot2docker versuchen zumindest die Bereitstellung des Docker-Daemons auf Windows und OS X zu erleichtern, aber die Administration bleibt am Benutzer hängen.

Mit Docker Machine hat Docker ein Werkzeug geschaffen, das die Bereitstellung eines Docker Hosts wesentlich vereinfacht. Die Bereitstellung der Plattform und die Implementierung von Docker selbst wird komplett automatisiert. Selbst die Erstellung einer SSL-PKI und die Verteilung der für die Nutzerauthentifizierung benötigten Zertifikate übernimmt Machine. Daneben konfiguriert das Tool das lokal installierte Docker-Kommandozeilenprogramm, sodass es mit dem entfernten Docker-Daemon kommunizieren kann. Auch die weitere Administration wie die Verbindung auf den Docker Host via SSH oder das automatische Upgrade und die Deprovisierung eines Docker Host ist im Werkzeug implementiert. Machine ist in der Programmiersprachen Go geschrieben und steht für viele Plattformen direkt zur Verfügung. Die Beispiele in diesem Artikel wurden mit Version 0.5.0 umgesetzt.