Virtualisierung
03.01.2018
Virtualisierung mit Docker
1. Teil: „Cloud-Hoster erleichtern den Container-Einsatz“

Cloud-Hoster erleichtern den Container-Einsatz

Autor:
DockerDockerDocker
Docker
Dank Containern-Hosting aus der Cloud kann Docker endlich seine Stärken ausspielen. Verschiedene Cloud-Provider bieten fortgeschrittene Analysefunktionen bei der Virtualisierung.
  • Docker: Die Vorteile der Container-Lösung sind unbestritten. Noch gibt es aber Hürden beim praktischen Einsatz.
Die Vorteile von Docker bei der Entwicklung und Auslieferung von Standalone-Services sind unbestritten. An erster Stelle zu nennen: kein Konfigurationsärger und automatisches Reprovisioning.
In der Praxis dagegen litt Docker unter dem Fehlen von Infrastruktur-Providern – das bei klassischen Servern problemlose Beschaffen zusätzlicher Rechenleistung aus der Cloud galt lange Zeit als unmöglich.
Dieses Problem lässt sich zwar durch den Kauf von Servern umgehen, auf die über ein Konfigurationsmanagementsystem die Docker-Pakete gebracht werden. Wirklich befriedigend ist dies insofern nicht, als die IT-Abteilung sich so nach wie vor um die Verteilung der Container auf die Hardware kümmern muss, je nachdem welche Work­loads anfallen.
Aber auch hier gibt es inzwischen Lösungsansätze. Seit etwa 2016 treten Unternehmen auf, die sich auf das Hosting von Docker-Containern spezialisiert haben. Als Kunde kauft man bei ihnen eine schlüsselfertige Ausführungsumgebung für seine Container, die sich in den meisten Fällen in die Docker-Kommandozeile integriert. Im Idealfall erfolgt das Deployment analog zur Auslieferung eines lokalen Containers.

Wieso auf die Cloud verteilen?

Ein Cloud-Provider wie Amazon AWS hält im Kern eine große Menge von Servern vor, um sie Kunden bei Bedarf zur Verfügung zu stellen. Das Konzept funktioniert, weil Lastspitzen nicht bei allen Klienten gleichzeitig auftreten. Die auf den ersten Blick schweißtreibend hohen Preise von Cloud-Dienstleistungen relativieren sich, wenn man bedenkt, dass die Abrechnung oft auf Minutenbasis erfolgt.
Wer Cloud-Dienste in seine Infrastruktur einbindet, erspart sich zudem peinliche Ausfälle: Wenn man im Notfall schnell und unbürokratisch skalieren kann, muss man Kunden nicht mit einer Fehlermeldung abspeisen. Wer etwa nach einer Erwähnung beim Technik-News-Blog Slashdot offline geht, weil seine Infrastruktur mit dem plötzlichen Ansturm nicht fertigwird, gewinnt nur wenige neue Nutzer für sich.
Bei der Nutzung geografisch verteilt aufgestellter Provider ist es zudem möglich, auf lokale Kapazitätsengpässe oder örtliche Gegebenheiten zu reagieren. Das Unternehmen des Autors unterstützte zum Beispiel einmal die Werbekampa­gne einer baskischen Firma, indem es ihr zusätzliche Server in der Nähe beschaffte.
2. Teil: „Wie funktioniert es?“

Wie funktioniert es?

  • Sloppy.io: Der deutsche Hoster bringt Docker-Container in die Cloud.
Zum Verständnis des Gesamtsystems mit gehosteten Docker-Containern bietet es sich an, eine Beispiel-Implementierung anzuschauen: Der Cloud-Hoster Sloppy.io ist in Deutschland ansässig und offeriert eine kostenlose Testphase. Der Lebenszyklus einer in Sloppy.io gehosteten Applikation beginnt mit der üblichen Bereitstellung eines Images. Im nächsten Schritt muss eine Konfigurationsdatei im JSON-Format angelegt werden, die sodann unter Nutzung eines Kommandozeilenwerkzeugs oder einer Webseite in die Cloud wandert.
Da die Docker-Files zur Erstellung von Diensten nicht unbedingt für die Allgemeinheit vorgesehen sind, ist Sloppy.io auch in der Lage, auf private Docker-Repositories zuzugreifen. Manche Anbieter offerieren sogar ein privates Repository, das direkt im hauseigenen Netz liegt. Das ist aus latenztechnischer Sicht zu bevorzugen, da das Deployment neuer Images so noch schneller erfolgen kann.
Wer einen komplett lokalen Workflow betreibt, hat beim Umstieg nur wenig Mehraufwand: Anstatt die Images in den Cache einer Workstation zu kompilieren, müssen sie im Beispielszenario einfach nur im Rahmen der Kompilation in einen für den Anbieter zugänglichen Platz wandern. Im nächsten Schritt ist noch etwas Konfigurationsarbeit erforderlich – danach steht der Container schon zur Verfügung.
Die Nutzung fortgeschrittener Funktionen beim Container-Hosting erfordert je nach Provider noch etwas zusätzliche Arbeit. Was man dafür braucht, ist im Allgemeinen aber sehr gut dokumentiert. Manche Anbieter halten für die Container ihrer Kunden einen Service bereit, der das Zuschalten weiterer Ressourcen erlaubt, wenn dies von Programmen angefordert wird.

Docker-Container sind flotter als klassische VMs

Angemerkt sei, dass Docker-Container in Sachen Performance klassischen virtuellen Maschinen nicht etwa unter-, sondern überlegen sind. Eine 2014 von IBM durchgeführte Analyse ergab, dass die Nutzung eines Docker-Containers die Ergebnisse des Linpack-Benchmarks nicht negativ beeinflusste. Als primäre Quelle von Overhead wurde die NAT-Schicht (Network Address Translation) ausgemacht – hier gibt es in der Tat höhere Performance-Einbußen.
Das Deployment von Docker-Containern in von Providern bereitgestellte Runtimes erfolgt normalerweise in Form von Services – das direkte Anstoßen eines einzelnen Containers von der Kommandozeile aus ist möglich, aber nicht wirklich intendiert. Bei vielen Anbietern können Administratoren sogar die Initialisierungsreihenfolge der Container festlegen, um das System als Ganzes in einem konsistenten Zustand zu halten.
Der Gutteil der Cloud-Anbieter unterstützt dabei das Anlegen persistenter Speicherbereiche, die zwischen mehreren Aufrufen ein und desselben Containers erhalten bleiben. Die verwendete Architektur ist von Anbieter zu Anbieter verschieden – manche erlauben das Markieren bestimmter Verzeichnisse des Dateisystems als „remanent“, andere stellen ganze Remanent-Speicher-Volumes bereit.
3. Teil: „Fortgeschrittene Funktionen“

Fortgeschrittene Funktionen

Als Einzelkämpfer arbeitende Administratoren automatisieren vergleichsweise wenig – der Aufwand für die Entwicklung eines komplexen Hilfssystems lohnt sich nur in den seltensten Fällen. Die Nutzung eines Cloud-Providers schafft Abhilfe: Wenn der Provider ein Feature entwickelt, kann er es über Hunderte oder gar Tausende Kunden amortisieren.
Unter anderem zeigt sich dies in fortgeschrittenen Logging- und Analysefunktionen, die das Beobachten der im Einsatz befindlichen Container erlauben. Sloppys markantestes Feature ist beispielsweise der Health Checker, der sowohl per TCP als auch per HTTP Kontakt mit der Applikation aufnimmt und diese bei Nichtreagieren automatisch neu startet. Andere Anbieter wie Google Cloud Platform starten auf Wunsch sogar einen dedizierten und vom Entwickler zu codierenden „Rettungsprozess“, der die Reste aufräumt.
Die eigenwilligen Netzwerkfunktionen Dockers sind ebenfalls bekannt: Jeder Container hat ein volles virtuelles Port-Komplement, das bei Bedarf mit einem realen Port des Hosts Verbindung aufnimmt. Die meisten Anbieter lösen das Problem des Mappings zwischen virtuellen und realen Ports durch Einführung einer Gruppe virtueller Domains – jeder Container ist so von außen vollwertig erreichbar.
Eine weitere populäre Leistung von Cloud-Hostern ist das Vorhalten älterer Versionen. Manche speichern bis zu zehn ältere Varianten der ausgeführten Docker-Container. Das ist nett, aber ein zweischneidiges Schwert: Die Backup-Dienste können naturgemäß nur Struktur-, aber keine Kundendaten wie E-Mails sichern – wer die Absicherung seiner Infrastruktur auf das Backup der Container beschränkt, lebt gefährlich.

Risiken und Probleme

Wie bei allen Cloud-Diensten gilt, dass das Abdecken der Grundlast durch Clouds finanziell unsinnig ist: Auch wenn Provider für fix gebuchte Maschinen mitunter einen Rabatt gewähren, ist eigene oder langfristig gemietete Hardware preiswerter, den Administrationsaufwand außen vor gelassen.
Problematisch ist das Container-Hosting in der Cloud auch in datenschutzrechtlicher Hinsicht: Wer Daten an einen Provider ausliefert, verliert die Hoheit über sie. Ein US-Anbieter steht im Zweifel doch eher aufseiten einer dortigen Regierungsbehörde. Das gilt auch insofern, als man nie weiß, was andere Container in der Ausführungsumgebung so treiben.
Für das Cloud-Hosting spricht, dass es besser auf das Risiko eines Ausfalls vorbereitet ist. Das Management eines Unternehmens geht zwar oft davon aus, dass eine selbst entwickelte und zu 100 Prozent selbst kontrollierte Lösung einem Zukauf überlegen ist. In der Praxis ist dies jedoch so gut wie immer ein Trugschluss – ein auf das Hosting von Docker-Containern spezialisiertes Unternehmen macht die ganze Zeit nichts anderes und ist schon deshalb besser aufgestellt.
Zu bedenken ist schließlich noch: Windows-Container finden im Moment nur wenig Unterstützung: Wer seine Container-Lösung auf Linux-Containern aufbaut, hat bei der Provider-Suche wesentlich mehr Auswahl.

Fazit

Das einst als reines Entwickler-Tool abgetane Docker hat in den letzten zwei Jahren im Produktiveinsatz Boden gut­gemacht. Einen weiteren Schub könnte dieser Entwicklung das Hosting von Containern in der Cloud geben. Wer diese Möglichkeit ausprobieren möchte, kann kostenlose Basisangebote nutzen, die in der Regel ein oder zwei Container einschließen.

mehr zum Thema