© Mathisa/Shutterstock.com
Docker für Datenbanken verwenden

Beyond stateless Apps


Wer schon mal mit docker run nginx eine nginx-Instanz gestartet hat, wird durch den Usability-Boost von Docker motiviert, tiefer in die Materie einzusteigen. Docker macht es sehr einfach, Applikationen zu konfigurieren und zu starten. Durch einige wenige Befehle auf der Kommandozeile lassen sich viele Aspekte im Lebenszyklus einer Applikation mühelos abdecken.

Am Beispiel des nginx-Containers fällt auf, dass man in den Container noch seine eigentliche Konfiguration hineinbekommen muss. Das lässt sich entweder dadurch bewerkstelligen, dass der Entwickler ein eigenes Docker Image auf Basis des nginx Image baut oder ein Volume in den Container mountet, z. B. über: docker run -v / host/path/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx. Zwar verpsricht der zweite Ansatz höhere Flexibilität, allerdings ist er in einem Container-Cluster-Umfeld wie Kubernetes ungeeignet, da der Container auf einem beliebigen Knoten gestartet werden kann, auf dem die Konfigurationsdateien nicht vorliegen. Kubernetes bietet deshalb für das Konfigurationsmanagement den speziellen Datentyp Configmaps an, um dieses Problem anzugehen. Dieses Beispiel soll verdeutlichen, dass zustandsbehaftete Anwendungen auch in einer containerisierten Umgebung nicht die Ausnahme sind, sondern die Regel. Zwar mag dieses Vorgehen mit den Prinzipien aus dem Zwölf-Faktoren-App-Manifest [1] brechen, aber interessanterweise befinden sich aktuell fünf Datenbanken unter den Top Ten der am meisten heruntergeladenen Container-Images auf Docker Hub [2]. Das spricht klar für ein gesteigertes Interesse an containerisierten Datenbanken. „Twelve-factor processes are stateless and share-nothing. Any data that needs to persist must be stored in a stateful backing service, typically a database.“ [1]

Fairerweise muss man klarstellen, dass Twelve-Factor-Apps nicht zwingend containerisiert sein müssen. Mit Sicherheit aber sind Container als Laufzeitumgebung ein innovativer Wegbereiter für viele Aspekte von Twelve-Factor-Apps und damit zukünftig grundlegendes Know-how für Entwickler und DevOps Engineers.

Das Was und das Warum

Im Gegensatz zum Konfigurationsmanagement stehen wir bei containerisierten Datenbanken ganz anderen Herausforderungen gegenüber. Die erste Aufgabe ist, Daten über die Lebenszeit eines Containers hinweg zu persistieren. Des Weiteren sollte natürlich die Datenkonsistenz gewährleistet sein. Darüber hinaus muss eine Datenbank eine hohe Verfügbarkeit haben, da es sich um einen Kernservice handelt, dessen ...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang