Wo speichert ein Datenbank Docker Container seine Daten?

Frage

Die Frage, die aufgetaucht ist, ist folgende: Ich möchte einen Datenbank Docker Container zum Beispiel in OpenShift erstellen. Dies ist eine sehr einfache Sache, da OpenShift bereits Templates für diverse Datenbanklösungen wie PostgreSQL anbietet.

Die Frage ist nun: Wenn ich diese PostgreSQL Instanz verwende und fleissig Daten inserte und update – Sind diese Daten dann im Container gespeichert oder brauche ich extra einen externen Speicher?

Antwort

Docker Container sind von kurzlebiger/flüchtiger Natur – Das korrekte Englische Wort dafür ist ephemeral. Heisst, alle Daten, die ich in meinem Docker Container speichere, sind verloren, wenn ich den Container neustarte oder wenn sonst etwas mit ihm passiert.

Um Daten persistieren zu können wie etwa in einer Datenbank muss man diesen Container an einen externen Speicher anschliessen (etwa NFS, Block Storage wie SAN oder Container Native/Ready storage wie gluster/ceph). Werden die Daten dort persistiert, überdauern sie auch das brutale Töten des Docker Containers.

Wenn man dann Daten in die PostgreSQL Tabellen einfügt, schreibt es die Daten dann effektiv auf den angegebenen Speicher, den man an den Container beziehungsweise an den Pod angehängt hat.

So macht mans also richtig: Immer zuerst ein persistentes Volume anlegen und dann mit einem sogenannten Persistent Volume Claim auf diesen Speicher zugreifen.

Werbeanzeigen