Docker Container Backup

SaschaQ88

Benutzer
Mitglied seit
13. Aug 2021
Beiträge
72
Punkte für Reaktionen
0
Punkte
6
Hallo zusammen,

ich habe einen Docker Container auf der Synology laufen.

Nun erstelle ich jede Nacht ein Backup mit dem folgenden Befehl:

/usr/syno/bin/synowebapi --exec api=SYNO.Docker.Container method=export version=1 path="/Sicherung/Docker-Container/Exporte/Docker-Container" name="Docker-Container"

Ich kann die txz Datei, die mit diesem Backup erstellt wird, nicht in Docker auf der Synology importieren.

Mit diesem Befehl wird eine txz Datei erstellt. In dieser Datei befindet sich eine image.tar. Darin befindet sich die folgende Ordnerstruktur:


Screenshot 2024-08-09 091329.png

Hat jemand eine Idee?
 

Benie

Benutzer
Contributor
Sehr erfahren
Mitglied seit
19. Feb 2014
Beiträge
8.473
Punkte für Reaktionen
3.510
Punkte
344
Mal Grundsätzlich gefragt, was versprichst Du davon den Container zu Backupen / Exportieren ? .
Eigentlich macht es mehr Sinn die gemappten Dateien bzw den docker Ordner zu sichern, denn da liegen doch eigentlich die wichtigen Daten.
Den Container kannst ja einmal von Hand exportieren.
 
  • Like
Reaktionen: maxblank

SaschaQ88

Benutzer
Mitglied seit
13. Aug 2021
Beiträge
72
Punkte für Reaktionen
0
Punkte
6
ICh möchte einfach gerne ein BAckup haben, was ich im Fehlerfall wieder in die Synology Docker Anwendung importieren kann.

Wie würdest du das denn machen`? Und wie kann man das dann wieder importieren?
 

ctrlaltdelete

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
13.633
Punkte für Reaktionen
5.809
Punkte
524
Ich nutze das im Aufgabenplaner zum Export als json und sichere die gemappten Ordner mit Hyper Backup
Code:
#!/bin/bash
BACKUP_DIR="/volume2/docker/Docker_BackUps"
IGNORE_CONTAINERS=(jitsi_jicofo jitsi_jvb jitsi_prosody jitsi_web synology_docviewer_2 synology_docviewer_1)
EXPORT_DATE="$(date +%Y-%m-%d_%H-%M)"

[ ! -d "${BACKUP_DIR}" ] && mkdir -p "${BACKUP_DIR}"
echo "exporting container settings to ${BACKUP_DIR}"

for container in $(docker ps --format "{{ .Names }}"); do
    if grep -q "$container" <<< "${IGNORE_CONTAINERS[@]}" ; then
        echo "${container} is on ignore list. Skipping this container."
        continue
    else
        echo "${container} export"
        /usr/syno/bin/synowebapi --exec api=SYNO.Docker.Container.Profile method=export version=1 outfile="${BACKUP_DIR}/${container}_${EXPORT_DATE}.json" name="${container}"  2> /dev/null
    fi
done
find "$BACKUP_DIR" -name "*.json" -mtime +7 -exec rm {} \;
exit
 

ctrlaltdelete

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
13.633
Punkte für Reaktionen
5.809
Punkte
524
Oder als Yaml:
Code:
#!/bin/bash

# anzupassen:
BackUpDir="/volume2/docker/Docker_BackUps"
IgnoredContainer=(jitsi_jicofo jitsi_jvb jitsi_prosody jitsi_web synology_docviewer_2 synology_docviewer_1)

#–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
for container in $(docker ps --format "{{ .Names }}"); do
    if grep -q "${container}" <<< "${IgnoredContainer[@]}" ; then
        echo "${container} is on ignore list. Skipping this container."
        continue
    else
        echo "${container} export"

    # YAML:
        # https://www.synology-forum.de/threads/docker-container-automatische-docker-compose-file-erstellen-als-backup.110444/post-897496
        docker run --rm -v /var/run/docker.sock:/var/run/docker.sock red5d/docker-autocompose "${container}" > "${BackUpDir}/${container}_$(date +%Y-%m-%d_%H-%M).yml"
        fi
done
find "$BackUpDir" -name "*.yml" -mtime +7 -exec rm {} \;
exit
 

DaveR

Benutzer
Sehr erfahren
Mitglied seit
30. Mrz 2022
Beiträge
236
Punkte für Reaktionen
492
Punkte
119
@ctrlaltdelete

I'm going to borrow your bash code so my syno_app_mover script can save a backup of each container's settings before moving Container Manager.

I notice your bash style changed a bit. BACKUP_DIR vs BackUpDir and IGNORE_CONTAINERS vs IgnoredContainer. Which is your current style?

Also what was the reason for ignoring those containers?
 
  • Like
Reaktionen: ctrlaltdelete

ctrlaltdelete

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
13.633
Punkte für Reaktionen
5.809
Punkte
524
Über Import im Container Manager, Container, Aktion, Import
 

SaschaQ88

Benutzer
Mitglied seit
13. Aug 2021
Beiträge
72
Punkte für Reaktionen
0
Punkte
6
@ctrlaltdelete wenn ich dein Skript laufen lassen, dann bekomme ich aber nur eine JSON File raus oder? Was ist mit dem Ordner wo der Docker Container auf der Platte liegt?
 

ctrlaltdelete

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
13.633
Punkte für Reaktionen
5.809
Punkte
524
Den sicherst du mit Hyper Backup.
 

ctrlaltdelete

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
13.633
Punkte für Reaktionen
5.809
Punkte
524
Also mit dem Script sicherst du die Einstellungen und mit HB die Ordner.
Rücksichern, zuerst die Ordner wiederherstellen und dann die einzelnen json oder yml importieren.
 
  • Like
Reaktionen: Benie und DaveR

SaschaQ88

Benutzer
Mitglied seit
13. Aug 2021
Beiträge
72
Punkte für Reaktionen
0
Punkte
6
Also habe ich dann eine JSON Datei und einen Ordner im Dateisystem und wie sichere ich dann die JSON und die Ordner zurück?
 

ctrlaltdelete

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
13.633
Punkte für Reaktionen
5.809
Punkte
524

ctrlaltdelete

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
13.633
Punkte für Reaktionen
5.809
Punkte
524
Nein, war ein anderer Thread, aber jetzt:
 

Anhänge

  • 1723556039098.png
    1723556039098.png
    51,5 KB · Aufrufe: 19
  • Like
Reaktionen: DaveR und Benie

SaschaQ88

Benutzer
Mitglied seit
13. Aug 2021
Beiträge
72
Punkte für Reaktionen
0
Punkte
6
Okay und da kommt dann die Json rein ? Und den Ordner verknüpft man dann ?
 

ctrlaltdelete

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
13.633
Punkte für Reaktionen
5.809
Punkte
524
Ich verstehe die Frage nicht?
 

SaschaQ88

Benutzer
Mitglied seit
13. Aug 2021
Beiträge
72
Punkte für Reaktionen
0
Punkte
6
Ja der Vorgang. Was importiert man in den Container Manager nur die Json ? Und den Ordner kopiert man dann an die Stelle wo die Json hinzeigt?
 

Benie

Benutzer
Contributor
Sehr erfahren
Mitglied seit
19. Feb 2014
Beiträge
8.473
Punkte für Reaktionen
3.510
Punkte
344
Normalerweise erstellst Du ja einen freigegebenen Ordner "docker"
Und hier musst Du dann für den Container die Unterordner erstellen, wie in der Anleitung vorgegeben, das machst Du bevor Du den Container erstellst.
Dort kopierst Du die gesicherten docker Dateien wieder rein.

In der yml oder jaison ist ja normalerweise alles drinn damit diese Verzeichnise wieder gemappt werden.
 

SaschaQ88

Benutzer
Mitglied seit
13. Aug 2021
Beiträge
72
Punkte für Reaktionen
0
Punkte
6
Okay das heißt man kopiert den Ordner aus dem Hyper Backup wieder an die stelle wo der docker Container vorher lag und spielt dann die json ein
 


 

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