mgutt Posted October 11, 2022 Share Posted October 11, 2022 Ich überlege gerade ob ich etwas als Plugin umsetze. Und zwar soll kurz bevor das Update eines Containers installiert wird, ein Update vom entsprechenden appdata-Ordner erstellt werden. Das ist noch eine sehr frühe Phase. Wer mag kann mal diesen Code ausführen (Rückgängig machen, siehe unten): sed -i '/communityApplications/i\ execCommand("docker inspect $Name | grep :/ | grep -oP \x27/mnt/[^/]+/appdata/[^/:]+\x27 | sort -u | xargs -I{} sh -c \x27rm -r {}_before_update 2>/dev/null; cp -a --reflink=always {} {}_before_update\x27", $echo); ' /usr/local/emhttp/plugins/dynamix.docker.manager/include/CreateDocker.php Nun geht man auf irgendeinen Container, aktiviert die erweiterte Ansicht und macht ein Force Update. Man sieht nun nach dem Herunterladen der neuesten Images und dem Stoppen des Containers einen neuen "Command" Block und je nachdem wie viele Dateien gesichert werden, wird für ein paar Sekunden das "Please wait..." angezeigt: Um dann im Anschluss wie gehabt mit Removing Container und dem Neustart des Containers fortzufahren: Doch was ist nun dadurch passiert? Nun wenn man in den Appdata-Ordner reinschaut, sieht man, dass ein neuer Ordner /containername_before_update erstellt wurde, welcher eben eine Kopie aller Dateien des Containers enthält, bevor das Update gemacht wurde: Schlussendlich wäre dann die Idee (ist jetzt noch nicht im Code enthalten), dass man über einen neuen Menü-Eintrag ein Update zurückrollen kann: Dazu müsste ich dann aber noch die Version des Repositories von vor dem Update ermitteln und die XML entsprechend so ändern, dass sie bei einem Rollback zB nextcloud:latest gegen nextcloud:23.0.1 oder was auch immer ersetzt, bevor der Container damit dann neu gestartet wird. Was haltet ihr von der Idee? Wie man oben genannten Code wieder entfernt: sed -i '/execCommand("docker/d' /usr/local/emhttp/plugins/dynamix.docker.manager/include/CreateDocker.php 5 Quote Link to comment
vakilando Posted October 11, 2022 Share Posted October 11, 2022 Die Idee finde ich ziemlich gut! Ich habe den ein oder anderen wichtigen Container, den ich vor einem Update tatsächlich manuell sichere und vorher auch prüfe welche Version (tag) installiert ist. Wenn dies über ein Plugin automatisch geschehen würde, wäre das prima. Mein nextcloudpi ist mir auf die Art letztens um die Ohren geflogen... Es wäre vielleicht sinnvoll vor dem Backup zu prüfen wieviel freier Platz auf dem Datenträger (appdata) ist. Optional könnte vielleicht auf einer Einstellungsseite des Plugins angegeben werden welche Container vor einem Update gesichert werden? Quote Link to comment
mgutt Posted October 11, 2022 Author Share Posted October 11, 2022 14 hours ago, vakilando said: Es wäre vielleicht sinnvoll vor dem Backup zu prüfen wieviel freier Platz auf dem Datenträger (appdata) ist. Das sind Snapshot-Kopien (reflinks), die keinen Speicherplatz verbrauchen. Zumindest nicht, solange nicht sehr viele appdata Dateien des Containers geändert werden. Da wäre dann aber eh die Frage wann das wieder gelöscht werden sollte. 14 hours ago, vakilando said: Optional könnte vielleicht auf einer Einstellungsseite des Plugins angegeben werden welche Container vor einem Update gesichert werden? Welchen Vorteil erwartest du dadurch? Quote Link to comment
Archonw Posted October 11, 2022 Share Posted October 11, 2022 Die Idee ist super. Denn bisher halte ich doch noch immer etwas die Luft an, wenn Updates ausgerollt werde. Und ein derartiges Backup wäre so manches mal schon hilfreich gewesen und hätte durchaus einiges an Zeit erspart.Wann die Backups gelöscht werden können? Gerne nach Zeit, oder wenn mehr als X Versionen vorhanden sind. Gesendet von meinem Pixel 6 Pro mit Tapatalk Quote Link to comment
vakilando Posted October 11, 2022 Share Posted October 11, 2022 13 hours ago, mgutt said: Das sind Snapshot-Kopien (reflinks) habe dein Script sträflicherweise nur schnell und schlecht überflogen. Wenn das kein bis wenig Speicherplatz benötigt muss nicht nach freiem Platz geprüft werden. 13 hours ago, mgutt said: Welchen Vorteil erwartest du dadurch? Der Gedanke war Platz sparen... Quote Link to comment
vakilando Posted October 11, 2022 Share Posted October 11, 2022 28 minutes ago, Archonw said: Wann die Backups gelöscht werden können? (...) wenn mehr als X Versionen vorhanden sind. Dem würde ich mich anschließen. X könnte in den Plugin-Einstellungen angegeben werden? Quote Link to comment
hawihoney Posted October 12, 2022 Share Posted October 12, 2022 On 10/11/2022 at 2:20 AM, mgutt said: bevor das Update eines Containers Gibt es eigentlich einen Befehl innerhalb Unraid der einen Container Check bzw. Update durchführt? Weißt Du da was? Quote Link to comment
sylus Posted October 13, 2022 Share Posted October 13, 2022 Finde die Idee sehr gut. Als Historie sollten ja eigentlich 1, max. 2 Versionen reichen. Quote Link to comment
mgutt Posted November 20, 2022 Author Share Posted November 20, 2022 Falls den Code oben jemand testet: Ich habe ihn aktualisiert, da er bei einem Container bei mir nicht funktioniert hat. Einfach so entfernen: sed -i '/execCommand("docker/d' /usr/local/emhttp/plugins/dynamix.docker.manager/include/CreateDocker.php Und dann wieder den Code aus dem ersten Beitrag ausführen. Quote Link to comment
mgutt Posted November 20, 2022 Author Share Posted November 20, 2022 Ein richtiges Problem habe ich bei der Ermittlung der Version, weil diese Information scheinbar gar nicht zur Verfügung steht: https://forums.docker.com/t/how-to-find-out-container-version/98418 @ich777 Ich möchte gerne von einem :latest Container ein Backup machen und im Backup vermerken, welches :xyz man setzen muss, damit beim Restore die korrekte Containerversion verwendet wird. Hast du eine Idee wie man das angehen könnte? Laut dem Link bekommt man zumindest die digest ID heraus. Die könnte man dann ja mit Docker Hub abgleichen: https://hub.docker.com/r/plexinc/pms-docker/tags Aber haben die dafür eine API oder so? Weil wenn man auf eine Digest klickt, steht da bereits der Tag "latest" drin: https://hub.docker.com/layers/plexinc/pms-docker/latest/images/sha256-2aabcc10513f32af87eaa9b7f9081855c226647c9e0f2028f176584d46815221?context=explore Man kann so also keinen Rückschluss auf die reale Version, nämlich diese ziehen: https://hub.docker.com/layers/plexinc/pms-docker/1.29.2.6364-6d72b0cf6/images/sha256-2aabcc10513f32af87eaa9b7f9081855c226647c9e0f2028f176584d46815221?context=explore Quote Link to comment
MartinG Posted November 20, 2022 Share Posted November 20, 2022 Sehr gute Idee 🤘 Quote Link to comment
dirkhe Posted November 20, 2022 Share Posted November 20, 2022 Ist eine gute idee. Icb denke, man braucht eigentlich nur ein sich. verzeichnis, was man immer wieder verwenden kann. Datensicherung soll das ja nicht ersetzen. Geht ja nur darum, wenn das updaten "fehl" schlägt. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.