Es ist offensichtlich, dass im Markt Interesse an einer professionellen Lösung des leidigen Docker-Container-Sicherungsproblems besteht. Leider haben die Anbieter bisher noch kein brauchbares Produkt herausgebracht. Diverse Hosting-Unternehmen geben in ihren Blogs mehr oder weniger offen zu, dass sie die Sicherung der bei Ihnen untergebrachten Container im Großen und Ganzen mit Shell-Skripten bewerkstelligen. Ein Beispiel ist ownCloud, wo Nutzern die Verwendung eines CRON-Jobs empfohlen wird [2]. Unter [3] bietet der StackOverflow-Nutzer tommasop eine Gruppe von Skripten an, die sich im Prinzip auf die Abarbeitung der zuvor besprochenen Docker-Vorgaben beschränken. Als Beispiel hierfür das folgende Skript, das sich um die Sicherung kümmert:
#!/bin/bash
# This script allows you to backup a single volume from a container
# Data in given volume is saved in the current directory in a tar archive.
CONTAINER_NAME=$1
VOLUME_NAME=$2
usage() {
echo "Usage: $0 [container name] [volume name]"
exit 1
}
if [ -z $CONTAINER_NAME ]
then
echo "Error: missing container name parameter."
usage
fi
if [ -z $VOLUME_NAME ]
then
echo "Error: missing volume name parameter."
usage
fi
sudo docker run -rm --volumes-from $CONTAINER_NAME -v
$(pwd):/backup busybox tar cvf /backup/backup.tar
$VOLUME_NAME
Mit Shell-Programmierung erfahrene Personen bemerken sofort, dass das Skript nur eine umfangreiche Überprüfung der angelieferten Parameter mitbringt und sich sonst an die von Docker vorgegebene Vorgehensweise hält. Das unter [4] bereitstehende Docker-Backup verfährt im Prinzip analog. Der einzige Vorteil des in Go geschriebenen Programms ist, dass es etwas kompakter ausfällt und in Form eines installationsbereiten Docker-Containers auf Ihre Maschine wandert. Das Tool Akerbis erweitert dies insofern, als der hauseigene Container verschiedene Ziele wie beispielsweise FTP-Server zum Ablegen der generierten Sicherungsdaten einspannt. Sonst verhält sich auch dieses Programm wie eine Gruppe von Shell-Skripten; der Quellcode steht unter [5] zur Einsichtnahme bereit.
Link-Codes
[1] Volumes in Docker: https://docs.docker.com/storage/volumes/
[2] ownCloud in Docker wiederherstellen: https://owncloud.org/news/docker-series-pt-3-automatically-easily-backup-restore-dockerized-owncloud/
[3] Skripte für das Backup unter Docker: https://stackoverflow.com/questions/26331651/how-can-i-backup-a-docker-container-with-its-data-volumes/
[4] Docker-Backup: https://github.com/discordianfish/docker-backup/
[5] Quellcode zu Docker-Backup: https://github.com/akerbis/docker-backup/
[6] Docker-Backup mit Morpheus: https://www.morpheusdata.com/blog/2017-03-02-how-to-create-a-docker-backup-with-morpheus/
Sowohl Bacula als auch Bareos bieten zwar Container an, mit denen sich ihre Backup-Systeme in Docker ausführen lassen. Eine Erweiterung, die das Sichern von Docker-Containern ermöglicht, suchen wir bei beiden Varianten derzeit allerdings vergeblich. Das einzige kommerzielle Unternehmen, das Schritte in Richtung der Sicherung von Docker-Containern unternimmt, ist Morpheus Data. Zur Nutzung der unter [6] im Detail beschriebenen Sicherungsfunktionen müssen Sie allerdings auf die hauseigene Orchestrierungsplattform setzen, die zudem alles andere als preiswert sein dürfte.
Docker-Container stehen so gut wie nie unabhängig von sonstiger Infrastruktur. Daraus folgt, dass die Sicherung in beinahe allen Fällen eine interdisziplinäre Aufgabe darstellt. Die hier besprochenen Methoden helfen mit etwas Mitdenken, Probleme im Container-Einsatz zu vermeiden. Der derzeitig noch eher wilde Zustand dürfte über kurz oder lang kommerzielle Anbieter auf den Plan rufen. Vielleicht lanciert gerade, während Sie den IT-Administrator lesen, ein Start-up sein Produkt. Die Frage nach Backups für Docker bleibt spannend und wir werden sie im Auge behalten.
(dr)
Die digitale Signatur von Container-Images soll für mehr Sicherheit sorgen.