Docker Container Backup & Restore?

1 Antwort

Da fuehren wie ueblich mehrere Wege zum Ziel.

Mein persoenlicher Vorschlag:

Du baust dir einen Sidecar Container (z.B. ein default Ubuntu/Debian/whatever) und holst dir per "--volumes-from" die Volumes deines App- und DB-Containers. Gleichzeitig holst du mir einem bind mount einen lokalen Ordner in den Sidecar Container.

Fuer die Nextcloud kannst du einfach einen der gemeinen Backup Jobs mittels tar, rsync, borg, $younameit bauen.

Fuer die DB wuerde ich aber mit nativen Tools arbeiten wie mysqldump (langsamer und ggf. blocking, braucht aber nix) oder mariabackup (schneller, non-blocking, braucht ggf. Config), da du sonst das Risiko eingehst, inkonsistente Backups zu haben.

Disclaimer: Die eigentlichen Container musst du nicht sichern, die sind in deinem Fall recht stateless, weil du die Daten in Volumes persistierst hast.

Die Daten aus dem Volume kannst du dann einfach in den bind mount wegsichern, mit tar, rsync, restic, borg usw.

FrageH99 
Fragesteller
 25.03.2022, 20:35

Das hört sich doch nach einer guten Idee an, danke im Voraus.

Also dann wie folgt.
ich erstelle z.B. dann ein Debian Container okay
wie hole ich die volumes dann in debian rüber?
Die Nextcloud Daten würde ich dann per rsync und cronjob auf eine zweite SSD kopieren
Wie sichere ich genau die DB Volumes auf den erwähnten Debian?

Sagen wir mal ich habe dann alles gesichert, könnte ich dann auf der selben Maschine oder anderer Maschine Nextcloud wieder mit den Daten restoren 1 zu 1?

0
barnim  25.03.2022, 21:15
@FrageH99
wie hole ich die volumes dann in debian rüber?

Mit "--volumes-from" (https://docs.docker.com/storage/volumes/#backup-restore-or-migrate-data-volumes)

Wie sichere ich genau die DB Volumes auf den erwähnten Debian?

Mit z.B. mysqldump. Da purzelt am Ende dann auch nur ein File raus

Sagen wir mal ich habe dann alles gesichert, könnte ich dann auf der selben Maschine oder anderer Maschine Nextcloud wieder mit den Daten restoren 1 zu 1?

Ja. Du solltest halt dieselben Container Images verwenden, sonst kannst du das aber immer wieder herstellen.

0
FrageH99 
Fragesteller
 25.03.2022, 21:24
@barnim
docker run --rm --volumes-from dbstore -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata

wie kann ich das bei meinem Nextcloud umsetzen? Einen Container namens 'dbstore' habe ich. Was muss ich nun noch ersetzen?

hast du evtl eine gute Anleitung für mysqldump?

vielen vielen Dank

0