Flocker bündelt Docker-Container und Daten für einen einfachen Transport

Mit zunehmender Verbreitung von Docker-Containern werden auch deren Mängel deutlicher. Wie migrieren Sie beispielsweise einen laufenden Container zusammen mit seinen Daten auf einen anderen Server und behalten dabei seine Daten bei? Normalerweise nicht.

ClusterHQ, ein Startup, das teilweise von Hauptverantwortlichen für die Python Twisted-Netzwerk-Engine gegründet wurde, hat eine vorgeschlagene Lösung. Flocker, ein Open Source (Apache) -Datenvolumen-Manager für Dockerized-Anwendungen, der jetzt in Version 1.0 verfügbar ist, ermöglicht das Verknüpfen und Verschieben von Datenmengen (auch als Datasets bezeichnet) mit Containern.

Alles zusammenhalten

Flocker bündelt Container und Datasets und stellt so sicher, dass sie zusammen verschoben werden, wenn eine Dockerized-Anwendung zwischen Hosts in einem bestimmten Cluster verschoben wird. Die einzige Einschränkung besteht darin, dass der Speicher für die Daten von einem gemeinsam genutzten Speicher-Back-End bereitgestellt werden muss, auf das alle Knoten im Cluster zugreifen können.

Derzeit werden nur wenige Arten von Speicher-Backends unterstützt, die größtenteils Cloud-orientiert sind: Amazon EBS, Rackspace Cloud Block Storage und EMC ScaleIO. ZFS-basierter Speicher wird ebenfalls unterstützt, allerdings nur über ein Back-End, das derzeit experimentell ist.

"Alles, wofür Sie VMware vMotion verwenden würden", sagte Mark Davis, CEO von ClusterHQ, "sind die gleichen Gründe, aus denen Sie einen Container verschieben möchten. Und wenn ein Container Daten enthält, benötigen Sie so etwas wie Flocker."

Eine gepriesene Funktion von vMotion - die Live-Migration laufender Apps - ist in Flocker noch nicht ganz vorhanden. Bei den Migrationen handelt es sich eher um "minimale Ausfallzeiten" als um keine Ausfallzeiten, was bedeutet, dass während des Migrationsprozesses nur ein kleines Fenster für die Nichtverfügbarkeit vorhanden ist. Luke Marsden, CTO und Mitbegründer von ClusterHQ, erklärte in einem Telefonanruf, dass die Ausfallzeit "von der Geschwindigkeit abhängt, mit der das Back-End ein Volume von einer VM trennen und an eine andere VM anschließen kann. Aber wir sind sehr interessiert daran Minimierung dieser Ausfallzeit. "

ClusterHQ verfügt bereits über experimentelle Funktionen, um den Prozess mithilfe von Volume-Snapshots zu beschleunigen. Das Back-End muss jedoch Snapshots unterstützen, damit es funktionsfähig ist.

Dockers fehlende Teile

Docker hat traditionell mit Daten über Datenmengen gearbeitet, aber sie haben ihre eigenen Einschränkungen. Das manuelle Kopieren von Daten zwischen Containern ist immer noch nicht einfach (angeblich in Docker 1.7 behoben), aber die größte Mauer bleibt der schlechte Verwaltungszustand für Daten, die von Docker-Containern gemeinsam genutzt werden, die an verschiedenen Standorten ausgeführt werden.

Ein aktueller Vorschlag für Docker besteht darin, Containern einen neuen Speichertyp zur Verfügung zu stellen, bei dem Dritte Gerätetreiber für ihre eigenen Speichertypen bereitstellen können. Wenn eine solche Funktion implementiert würde, wäre es für ClusterHQ nicht schwierig, die Unterstützung durch die Back-End-Plug-In-Architektur des Datasets zu überarbeiten - und der Funktionalität, die im Laufe der Zeit in Dockers eigenen Kern einfließt, immer einen Schritt voraus zu sein.