Komplettes Backup der Docker Container und/oder VMs

  • Hallo und hi,

    habe leider über die Suche nichts gefunden mit "docker backup" :(
    Deshalb frage ich mal neu, da wir hier ja viele Unraid und Docker Spezialisten haben.

    Ich nutze Unraid in Version 6.9.3, dort u.a. auch das CA Backup Plugin.
    Läuft bei mir regelmäßig in unregelmäßigen Abständen. :)
    (Quasi, wenn ich dran denke und es für notwendig erachte ^^)


    Was ich fragen wollte,
    das Plugin sichert ja im Endeffekt nur die Daten innerhalb der Docker Container, die Docker selbst aber nicht, oder?

    Wie kann ich also ein komplettes Backup der Docker (inkl. der EInstellungen / Startparametern, aktuelle "Version", usw) erstellen?
    So dass im Falle eines Falles, lediglich irgendwas, irgendwohin kopiert werdne muss, und der Käse läuft wieer so wie am Tag des Backups?

    Oder liegen dei Docker-Containe Daten (also, die "Binärdaten zum ausführen") in der Docker.img?
    Das Plugin sichert eine "LibVirt.img" und eine "Docker.img".
    Ich muss zugeben, ich habe davon keine Ahnung (und das eine Menge), ich bin nur Nutzer. :(

    Bei den VMs ist das ja genauso, ich habe zwar nur eine WIndows 10 VM laufen, HDD Größe, 80 GB, aber die wird ja über das Plugin nicht wirklich gesichert.
    Klar, kann ich die VHD kopieren, aber wie die VM jetzt genau eingerichtet ist, das müsste ich aufschreiben...


    Grüße und Danke

  • das Plugin sichert ja im Endeffekt nur die Daten innerhalb der Docker Container, die Docker selbst aber nicht, oder?

    Man sichert auch keinen "Docker". Der Container selbst sollte immer "Stateless" sein. "Stateless" heißt also "Zustandslos". Der Container weiß nur so viel, wie du ihm gibst. Man sichert die Nutzdaten des Dockers, die, wenn es relevante Daten sind, als Volume in den Docker gemountet werden und somit nativ auf der Platte eines Docker-Servers liegen. Diese Daten kann man dann in einen Backup-Prozess mit einbeziehen. Musst du deinen Server neu aufsetzen, dann fährst du dir einen neuen Docker hoch, mountest die Daten rein und bist fertig.

    Das einzige, was man noch sichern könnte ist das Dockerfile welches man sich geschrieben hat oder das "Docker-Compose"-File damit Dinge mit dem richtigen Image, in der richtigen Reihenfolge oder im richtigen Netzwerk gestartet werden.

    Den Docker selbst, also den Container an sich, brauchst du nicht zu sichern. Der sollte "Schall und Rauch" sein.

    Nimm dir mal die 3 Stunden:

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.

    Die werden dein Leben in Bezug auf Docker verändern ;)

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

  • Naja,
    aber, was mache ich z.B: mit dem Docker TvHeadEnd z.B.
    Ich habe alle Dateien die der Docker benötigt (DVB Config, usw) über das PlugIn gesichert...
    angenommen in 5 Jahren ist TvHeadEnd so weit, dass die Konfig komplett anders aufgebaut ist wie jetzt (gab es ja schonmal), haber alles so laufen lassen die letzten 5 Jahre, kein Update, kein backup, kein nichts...

    Dann kommt der Crash.
    Ich setze Unraid neu auf, spiele meine Backups zurück die mir das CA PlugIn gestellt hat (was dann noch ging)...
    Lade den TvHeadEnd Docker, und bäm, meine alte Config passt nicht, weil ich eben jetzt nur noch das neue TvHeadEnd Docker bekomme.
    Hoffe man versteh einigermaßen was ich meine. :(

    Deshalb würde ich gerne, mein System, so wie es jetz ist einmal "einfrieren" mit allem drum und dran, weil es jetzt ja läuft...
    Gerade die Docker TvHJeadEnd und OSCam, da änert sich soooo vieles, da möchte ich ungern auf neue/aktuelle Container zugreifen müssen, weil es eben jetzt läuft. ;)

    Klar, kann man bestimmt die Docker-Revision vom aktuellen Container sichern, aber was ist, wenn auch diese nicht mehr Online vorhanden ist?


    PS: Video schaue ich am WOchenende an

  • Ich verstehe absolut, was du meinst.

    Wenn sich ein Container ändert oder der Container eine andere Configuration benötigt, dann ist ohnehin eine Umstellung nötig. Da kommst du gar nicht drumherum. Was bringt dir das Backup einer Konfiguration einer Software, wenn die Konfiguration auf eine neuere Version der Software nicht mehr anwendbar ist? Richtig...nichts.

    Was ich IMMER mache, wenn ich mir einen Docker anlege. Ich lege mir einen Ordner an, in dem ich eine README.md Datei lege. Dort schreibe ich rein, wie ich den Docker aufgesetzt habe und was welche Einstellung wo bewirkt. Ich schreibe also (und jetzt verwende ich das böseste Wort in der IT :D ) "Dokumentationen" :D ;)

    Keine Sorge...ich mach mich nicht lustig. Ganz und gar nicht ;). Aber Dokumentationen, wie du etwas aufgesetzt hast, sind das "A" und "O". Gerade bei etwas, was so Stateless ist, wie ein Docker.

    Viele Container benutzen die --env Parameter um eine entsprechende Configuration dem Container mitzugeben. Das kommt dann natürlich auch auf den Docker an ob der dir diese Möglichkeit bietet. Du kannst einem Container auch ein "env"-File mitgeben. Das ist übrigens in dem Video oben nicht beschrieben. Leider.

    Aber wie gesagt..wenn sich die Konfiguration des Dienstes, der dir durch den Docker angeboten wird, ändert...dann hilft dir jegliches Backup nichts.

    Ein Beispielt....

    Ich starte einen MariaDB Container mit folgendem Befehl:

    docker run --name kodi-mariadb --env MARIADB_ROOT_PASSWORD=root_pw -d mariadb:10.7.1

    Dort ist --env MARIA_ROOT_PASSWORD als "Umgebungsvariable" gegeben. Das möchte der Container so haben und damit konfiguriere ich die DB innerhalb des Containers. Jetzt mache ich mir eine README.md davon. Dann vergehen 3 Jahre und MariaDB ist dann vielleicht in Version "20" verfügbar. Dort haben sie vielleicht irgendwann den Parameter (die "Umgebungsvariable") von MARIADB_ROOT_PASSWORD zu MARIADB_MAIN_USER_PASSWORD geändert. BOOM....schon passt weder meine Konfig noch meine Dokumentation noch würden meine potentiell exportierten Konfig-Dateien passen.

    Damit die passen, darfst du halt nicht updaten. "Nicht updaten" ist aber genauso beschissen :D

    Willkommen in der Welt der IT in der sich ständig Dinge ändern und du dich immer wieder mit Dokumentationen rumschlagen und dich immer wieder aufs Neue einlesen werden musst.

    Wenn du bei der entsprechenden Version bleiben möchtest und nicht updatest, dann kannst du natürlich

    • den Container hoch fahren
    • dich darauf "attachen"
    • schauen welche Dateien zur Konfiguration benötigt werden
    • dir eine Notiz machen
    • den Container wieder runter fahren
    • den Container erneut hoch fahren und die Ordner, in denen die Konfigdateien liegen aus dem Container heraus-mounten.

    Dann würden die Config-Dateien auf der Festplatte liegen und du könntest sie einem Backup-Prozess unterziehen. Das hilft dir aber nur nicht, wenn sich die Software ändert und eine andere Konfiguration benötigt. Denn dann passt es nicht mehr. Das ist auch der Grund warum meine KEINE Container mit :latest als Tag startet. Man weiß nicht, welche Version in 3 Jahren verwendet wird, wenn ich den Container mal neu starten muss ;)

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!