Blog

Persistenz mit Docker-Containern - Team 1: GlusterFS

Cristiana

Cristiana

Aktualisiert Oktober 22, 2025
3 Minuten
Dies ist ein Nachfolgeblog vom KLM Innovationstag Das Ziel von Team 1 war es, GlusterFS Cluster in Docker Containern laufen zu lassen und das verteilte Dateisystem einem Container durch 'Mounten' über einen sogenannten Datencontainer zur Verfügung zu stellen. Die Einrichtung von GlusterFS war gar nicht so schwer, die Installationsschritte werden hier erklärt [installing-glusterfs-a-quick-start-guide]. Die Dockerdateien, die wir schließlich erstellt und verwendet haben, finden Sie hier [docker-glusterfs] Hinweis: die Dockerdateien beinhalten immer noch einige manuelle Schritte, da Sie GlusterFS über den anderen Knoten informieren müssen, damit sie sich gegenseitig finden können. In einer realen Umgebung könnte dies zum Beispiel mit Consul geschehen. Obwohl das Einrichten eines GlusterFS-Clusters nicht schwer war, erwies sich das Mounten auf CoreOS als viel komplizierter. Wir wollten den Ordner über einen Container mit dem GlusterFS-Client mounten, aber dazu muss der Container im privilegierten Modus oder mit 'SYS_ADMIN'-Fähigkeiten laufen. Das hat nichts mit GlusterFS selbst zu tun, Docker erlaubt keine Einhängevorgänge ohne diese Optionen. Schließlich kann der entfernte Ordner eingehängt werden, aber es ist nicht möglich, diesen eingehängten Ordner als Docker-Volume freizugeben. Dies ist ein Manko von Docker, siehe Docker-Problem hier Unsere zweite - nicht ganz so bevorzugte - Methode bestand darin, den Ordner in CoreOS selbst zu mounten und ihn dann in einem Container zu verwenden. Das Problem dabei ist, dass CoreOS keine Unterstützung für den GlusterFS-Client bietet, wohl aber für NFS. Damit dies funktioniert, haben wir GlusterFS über NFS aktiviert. Den Schritt zur Aktivierung finden Sie hier . Nachdem wir NFS auf GlusterFS aktiviert hatten, haben wir den exponierten Ordner in CoreOS gemountet und in einem Container verwendet, was problemlos funktionierte.GlusterFS über NFS zu mounten war nicht das, was wir wollten, aber glücklicherweise hat Docker seine experimentelle Volume Plugin-Unterstützung veröffentlicht. Und unser Glück war noch nicht zu Ende, denn es stellte sich heraus, dass David Calavera bereits ein Volume Plugin für GlusterFS erstellt hatte. Um dies zu testen, verwendeten wir also die experimentelle Docker-Version 1.8 und führten das Plugin mit den erforderlichen Einstellungen aus. Das funktionierte alles einwandfrei, aber an dieser Stelle verließ uns das Glück. Wenn wir den experimentellen Docker-Daemon in Kombination mit diesem Plugin verwenden, können wir im Debug-Modus sehen, dass das Plugin eine Verbindung zum GlusterFS herstellt und sagt, dass es den Ordner einhängt. Aber leider erhält es einen Fehler, der vom Server zu kommen scheint, und hängt den Ordner wieder aus.Das obige Volume-Plugin ist im Grunde ein Wrapper um den GlusterFS-Client. Wir haben auch eine Go-API für GlusterFS gefunden. Diese könnte verwendet werden, um eine reine Go-Implementierung des Volume-Plugins zu erstellen, aber leider fehlte uns die Zeit, dies tatsächlich zu versuchen. Fazit: Die Verwendung eines verteilten Dateisystems wie GlusterFS oder CEPH klingt sehr vielversprechend, insbesondere in Kombination mit dem Docker-Volume-Plugin, das die Implementierung verbirgt und es ermöglicht, den Container vom Speicher des Hosts zu entkoppeln. Update: Zwischen dem Innovationstag und diesem Blogbeitrag hat sich die Welt weiterentwickelt und Docker 1.8 ist erschienen und mit ihm ein CEPH Docker Volume Plugin.

Verfasst von

Cristiana

Some bio goes here

Contact

Let’s discuss how we can support your journey.