Docker Sicherung => Einstellungen und Daten

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
6.057
Punkte für Reaktionen
1.855
Punkte
254
Hallo,
ich war nie ein großer Freund von Docker, nun habe ich aber doch 2-3 Container durchweg am Laufen. Ja, ist schon ganz nett. Vielleicht gewöhne ich mich noch dran. ;-)

Nun würde ich gerne alles über ein Script immer wieder mal sichern lassen.

Vorweg, es gibt (wohl) drei Arten von Daten:
  • Container
  • Einstellungen
  • gemappte Verzeichnisse (z.B. in /volumeX/docker/containername)
Container:
Der muss (in der Regel) nicht gesichert werden.

Einstellungen:
Hier habe ich im Forum ein nettes Script gefunden, welches wunderbar funktioniert und für jeden Container ein json-File anlegt.
Thread => https://www.synology-forum.de/threa...r-export-config-json-files-via-skript.108440/

gemappte Verzeichnisse:
Hier kann ich über die Konsole alles taren, zippen und wegpacken. Aber ein wenig Sorge macht mir das bei Containern, die mit einer DB laufen.
Wäre es nicht besser den Container anzuhalten, alles zu sichern, dann den Container wieder zu starten?

Habe ich irgendwas übersehen?
 

Hellraiser123

Benutzer
Sehr erfahren
Mitglied seit
31. Jul 2024
Beiträge
764
Punkte für Reaktionen
410
Punkte
139
Bei der Datenbank hängt es davon ab was du für eine DB hast. Bei PostgreSQL z.B. könntest du einfach ein Dump erzeugen. PostgreSQL macht während dem Dump ein Lock auf die Tabellen die es gerade sichert. Das heißt du musst da nichts stoppen. So ein Dump wäre auch sinnvoll, wenn du z.B. PostgreSQL updaten willst von z.B. 15 auf 16. Da ist es nicht immer sicher, dass ein Update funktioniert. Für solche Fälle brauchst du dann ein Dump.
Ich glaube MySQL/MariaDB machen die Locks ebenfalls. Aber bei einem Update braucht man in der Regel kein Dump. Schadet aber auch nicht.
SQLite kannst du eigentlich einfach kopieren.

Ich würde mir daher immer einen Dump erzeugen und den mit sichern. Wenn dann die DB dann doch korrupt ist, dann kannst du es schnell wiederherstellen.

Fall es sich um PostgreSQL handelt und du mehre DBs hast, dann kannst du dir das mal angucken: https://github.com/eduardolat/pgbackweb. Damit kannst du ganz einfach Zeitgesteuert Backups erstellen und auch wieder einspielen. Wenn es nur 1 oder 2 sind, dann würde ich das per Cron machen.

PS: Ich würde statt der JSONs mir mit https://github.com/Red5d/docker-autocompose lieber compose.yml erzeugen, weil die JSONs kannst du nur bei Synology verwenden. Mit den compose.yml kannst es auf jedem Gerät wieder herstellen.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Der muss (in der Regel) nicht gesichert werden.
Korrekt, solange man alle dauerhaft zu persistierenden Daten über Volumes ausgeleitet hat. Container sind eh nur als Wegwerf-Instanzen gedacht,

Wäre es nicht besser den Container anzuhalten, alles zu sichern, dann den Container wieder zu starten?
Wenn man offene Dateien via Filebackup sichern will (egal ob per tar, cp, rsync...), kann es durchaus passieren, dass das Backup einen inkonsistenten Stand solcher Dateien enthält. Sofern ein Tool existiert, dass erlaubt "fachliches-Backups" zu erzeugen, kann man solche Probleme, wie @Hellraiser123 ja auch schon geschrieben hat, vermeiden.

Wobei ein "Container ausschalten" -> "Backup erzeugen" -> "Container wieder anschalten" auch zu einem konsistenten Filebackup führt und universell einsetzbar ist.
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat