Rancher.com denkt glücklicherweise an Backup und Restore ihrer Applikation. In gewisser Weise… Aber der Reihe nach.
Auf Rancher.com wird beschrieben, wie ein, mit Docker installierter Rancher, anhand des vorher gezogenen Backups wiederhergestellt werden kann. Das Problem dabei: es wird davon ausgegangen, dass der Rancher-Container bzw. seine von ihm benutzten Volumes noch existieren. Was aber, wenn das System komplett neu aufgesetzt werden muss und Docker die alten Images, Container, Volumes etc. nicht mehr besitzt?
Das Gute an Worst-Case Szenarios ist, dass man mit ihnen oft auch nicht ganz so schlimme Szenarios im Griff hat.
Voraussetzungen
- Rancher wurde wie auf Rancher.com beschrieben mit Docker installiert
- Der Rancher-Container wurde wie auf Rancher.com beschrieben gesichert
- Docker ist konfiguriert und lauffähig.
Der Restore
Als erstes wird das Backupfile im aktuellen Verzeichnis abgelegt. In diesem Beispiel heisst es rancher-data-backup-<DATE>.tar.gz
Danach wird ein temporärer Rancher-Container gestartet:
sudo docker run -d --restart=unless-stopped \
-p 80:80 -p 443:443 rancher/rancher:latest
CONTAINER=`sudo docker ps | grep rancher/rancher:latest \
| head -n 1 | awk '{print $NF}'`
sudo docker stop $CONTAINER
Nun werden die Backupdaten auf das Volume des temporären Rancher-Containers kopiert:
sudo docker run --volumes-from ${CONTAINER} -v ${PWD}:/backup \
busybox sh -c "rm /var/lib/rancher/* -rf && \
tar pzxvf /backup/rancher-data-backup-<DATE>.tar.gz"
Abschliessend wird der definitive Rancher-Container erstellt mit den Volumes des temporären Rancher-Containers:
sudo docker run -d --volumes-from ${CONTAINER} \
--restart=unless-stopped -p 80:80 -p 443:443 \
rancher/rancher:latest
NEWCONTAINER=`sudo docker ps | grep rancher/rancher:latest \
| head -n 1 | awk '{print $NF}'`
Stoppen und starten des Containers wie gewohnt mit stop und start:
sudo docker stop $NEWCONTAINER
sudo docker start $NEWCONTAINER
Have Fun!