Docker Container Backup

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

SaschaQ88

Benutzer
Registriert
13. Aug. 2021
Beiträge
72
Reaktionspunkte
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?
 
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
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?
 
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
 
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
 
@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
Über Import im Container Manager, Container, Aktion, Import
 
@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?
 
Den sicherst du mit Hyper Backup.
 
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
Also habe ich dann eine JSON Datei und einen Ordner im Dateisystem und wie sichere ich dann die JSON und die Ordner zurück?
 
Nein, war ein anderer Thread, aber jetzt:
 

Anhänge

  • 1723556039098.png
    1723556039098.png
    51,5 KB · Aufrufe: 28
  • Like
Reaktionen: DaveR und Benie
Ich verstehe die Frage nicht?
 
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?
 
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.
 
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
 

Additional post fields

 

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