Liebe Community,
da diese Frage immer wieder auftaucht, zeige ich Euch in diesem Tutorial, wie Ihr auf eine einfache Art und Weise Eure Docker-Container sichern und wiederherstellen könnt.
Anleitung Sicherung:
- Sofern noch nicht erfolgt, muss auf dem NAS wie folgt SSH aktiviert werden.
- Systemsteuerung > Terminal > SSH aktivieren (Haken setzen)
-
Terminal öffnen und per ssh anmelden.
-
Mit nachfolgenden Befehlen wird das erforderliche Image "Autocompose" installiert:
- sudo -i
- docker pull ghcr.io/red5d/docker-autocompose:latest
-
Docker-Compose (YML) eines laufenden Docker-Containers erzeugen, der Teil
muss durch den jeweiligen Namen des zu sichernden Containers ersetzt werden: - docker run --rm -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/red5d/docker-autocompose
- docker run --rm -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/red5d/docker-autocompose
Beispielausgabe meines Containers "Uptimekuma" im Terminal:
networks:
mvl:
external: true
name: "mvl"
services:
uptimekuma:
cap_drop:
- "AUDIT_CONTROL"
- "BLOCK_SUSPEND"
- "DAC_READ_SEARCH"
- "IPC_LOCK"
- "IPC_OWNER"
- "LEASE"
- "LINUX_IMMUTABLE"
- "MAC_ADMIN"
- "MAC_OVERRIDE"
- "NET_ADMIN"
- "NET_BROADCAST"
- "SYSLOG"
- "SYS_ADMIN"
- "SYS_BOOT"
- "SYS_MODULE"
- "SYS_NICE"
- "SYS_PACCT"
- "SYS_PTRACE"
- "SYS_RAWIO"
- "SYS_RESOURCE"
- "SYS_TIME"
- "SYS_TTY_CONFIG"
- "WAKE_ALARM"
command:
- "node"
- "server/server.js"
container_name: "uptimekuma"
entrypoint:
- "/usr/bin/dumb-init"
- "--"
- "extra/entrypoint.sh"
environment:
- "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
- "NODE_VERSION=18.20.3"
- "YARN_VERSION=1.22.19"
- "UPTIME_KUMA_IS_CONTAINER=1"
hostname: "uptime-kuma"
image: "louislam/uptime-kuma:latest"
ipc: "private"
labels:
com.centurylinklabs.watchtower.enable: "true"
com.docker.compose.config-hash: "fcfedead2f05c09bc78dedda73480d901ca03610ba4033de255c3e4a07092052"
com.docker.compose.container-number: "1"
com.docker.compose.depends_on: ""
com.docker.compose.image: "sha256:6953944fad7c07d281991f7f394547afd9a9a276c65d909a98296c3aeecf6015"
com.docker.compose.oneoff: "False"
com.docker.compose.project: "uptimekuma"
com.docker.compose.project.config_files: "/data/compose/74/docker-compose.yml"
com.docker.compose.project.working_dir: "/data/compose/74"
com.docker.compose.replace: "a3950b0dc27eed1abcb3a42dab059416b6511a170324bd39e554e41027036ca3"
com.docker.compose.service: "uptime-kuma"
com.docker.compose.version: "2.29.2"
logging:
driver: "json-file"
options: {}
networks:
- "mvl"
ports:
- "3001:3001/tcp"
restart: "unless-stopped"
volumes:
- "/volume2/docker/uptime-kuma:/app/data"
working_dir: "/app"
version: "3.6"
Display More
-
Markieren und kopieren der Ausgabe im Terminal.
-
Einfügen der Ausgabe in ein Textfile und dieses unter "Containername.yml" an einem sicheren Ort speichern.
-
Sofern die Sicherung der persistenten Daten Eurer Docker-Container nicht ohnehin schon automatisiert per RSYNC o.ä. erfolgt, müssen diese noch manuell gesichert werden. Hierzu den einfach den jeweiligen Ordner des Docker-Containers an ein einem sicheren Ort kopieren. Tipp: Am Besten speichert ihr die Datei aus Schritt 6 (Containername.yml) zusammen mit dem Ordner am selben Ort, um diese später leicht wiederzufinden.
- Dateimanager > Freigegebener Ordner > Docker > Ordner des Docker-Containers
- FERTIG.
Anleitung Wiederherstellung:
Hinweis - Diese Anleitung basiert auf Basis der Verwendung von Portainer!
- Den Ordner des rückzusichernden Docker-Containers (Schritt 7 aus der "Anleitung Sicherung") an den Ursprungsort zurück kopieren.
- Dateimanager > Freigegebener Ordner > Docker
- Portainer öffnen und anmelden
- Auf Live Connect klicken
- Anschließend im linken Menü auf "Stacks" und dann auf "Add Stack" klicken
- Im Feld "Name" Den Namen des rückzusichernden Containers eingeben
- Die Datei "Containername.yml" (Schritt 6 aus der "Anleitung Sicherung") mit einem Texteditor öffnen, den gesamten Inhalt markieren/kopieren und in Portainer in das Feld "Web Editor" einfügen.
- Hinweis: Wird derContainer auf einem anderen System bzw. anderem Volume rückgesichert, so muss das Volume-Mapping im kopierten Code natürlich entsprechend korrigiert werden!
- Anschließend unter "Actions" auf "Deploy the Stack" klicken.
- Der Docker-Container wird nun installiert und sollte nach Fertigstellung alle Einstellungen und persistenten Daten (zum Zeitpunkt der Sicherung des Container-Ordners) beinhalten.
- FERTIG
Allgemeiner Hinweis:
Nach der Installation von Autocompose (Schritt 3 aus der "Anleitung Sicherung"), ist in Portainer unter Images das entsprechende Image mit "Unused" deklariert. Dies ist normal, da dieses von keinem Docker-Container verwendet, sondern lediglich für die Exporte von Docker-Compose genutzt wird. Wird dieses Image gelöscht, können die beschriebenen Schritte ohne Neuinstallation nicht mehr durchgeführt werden.
Viel Spass beim Sichern/Rücksichern!