Manch einer mag vielleicht sogar behaupten, ich würde es mit Backups übertreiben, aber als mein treuer macMini nach 18 Jahre über Nacht das Zeitliche segnete, war ich doch froh, relativ flott die meisten Services auf einem neuen macMini wieder hergestellt zu haben ("relativ", weil Apple wohl seine Hardware nur noch als reines Spiele-Gerät ansieht und man erst einige Tricks anwenden muss, um macOS als etwas ähnliches wie nen Server verwenden zu können).

Was ich allerdings zuerst nicht wieder retten konnte, war mein wallabag Docker Container, weil ich damals hierfür ein Docker-Volume angelegt und den Inhalt des Dockervolumes nicht wie bei meiner bitwarden-Instanz gebackupt habe.
Da ich noch dazu Docker unter dem alten System nur via VirtualBox verwenden konnte, sind die Docker Volumes nicht irgendwo im Dateisystems des Macs vorhanden, welches ich im täglichen Vollbackup schnell hätte übernehmen können, sondern innerhalb der VirtualBox-Umgebung.

Es stellen sich mir also zwei Probleme:

  • Findet sich ein Docker Volume irgendwo im Dateisystem des Servers wieder und kann man die Daten da raus bekommen, ohne dass Docker läuft bzw installiert ist?
  • Wie komme ich an den Inhalt einer .vmdk-Imagedatei ran? Das ist die Imagedatei, die Virtualbox angelegt hatte und in welcher Docker lief und auch die Daten von Docker gelagert sind.

.vmdk-Imagedatei

Auf dem Mac konnte ich die Image-Datei auch mit installiertem macfuse nicht so einfach mounten. Da ich noch einen Laptop mit Ubuntu rumliegen hatte, mit dem das einfacher geht und nicht all zu viel Zeit verbraten wollte, hatte ich die Image-Datei also mit Linux geöffnet.
Und das geht, ausgehend davon, dass meine Imagedatei disk.vmdk heißt, so...

# Partitionsname in Erfahrung bringen
sudo apt install guestfs-tools
sudo virt-filesystems -a disk.vmdk
# Ausgabe nach einiger Bedenkzeit z.B.
# Name        Type        VFS     Label              Size          Parent
# /dev/sda1   filesystem  ext4    boot2docker-data   376378463476  -
#    ^ Wir interessieren uns für den Namen hier

# Mounten
sudo apt install guestmount
mkdir /mnt/vmdkdisk
sudo guestmount   -a disk.vmdk   -m /dev/sda1 --ro /mnt/vmdkdisk
# Der Name der virt-filesystems Ausgabe  ^           ^ der eben erstellte Ordner

Unter /mnt/vmdkdisk ist nun die Image-Datei eingehängt und unter /mnt/vmdkdisk/var/lib/docker/volumes fand ich meine Docker-Volumes.

Dummerweise mit den falschen Berechtigungen, so dass ich nur per sudo ran kam, aber mit dem Problem wollte ich mich nicht weiter aufhalten.

Die betreffende .vmdk-Datei, die alle Docker-Dateien enthält, hatte ich übrigens unter /Users/#username#/.docker/machine/machines/#name der Maschine#/ gefunden, wobei der Name der Maschine meist default lautet.

Docker Volume im Server-Dateisystem

Zwei Stellen, an denen sich die Suche lohnen könnte:
/var/lib/docker/volumes oder
/Users/#username#/.docker/machine/machines/#name der maschine#

Mit Docker Desktop kommt man auch über die Seitenleiste "Volumes" an die Docker Volumes, kann durch eine einzelne Docker Volume browsen und Dateien per Rechtsklick in das lokale Dateisystem rüberholen...was bei mehreren Dateien etwas ungemütlich wird. Und natürlich auch nur funktioniert, wenn Docker Desktop noch läuft.
Im lokalen Filesystem sind die Volumes irgendwie in der Image-Datei ~/Library/Containers/com.docker.docker/Data/vms/0/data/docker.raw zusammen mit den Images und Containern verwurschtelt und ich habe bisher noch keine Ahnung, wie man an den Inhalt der Datei rankommt.
Von dem her ist es beim Einsatz von Docker Desktop sehr wichtig, auf Docker Volumes zu verzichten oder deren Inhalt regelmäßig zu backupen (wie etwa hier beschrieben).

Jedes Docker Volume ist ein simpler Ordner, der die Dateien enthält.
Ich hatte erst mit einer einzigen Datei gerechnet, die irgendwie verwurschtelt, kodiert und verschlüsselt alle Docker Volumes enthält, aber dem ist zum Glück nicht so. Auch ein guter Punkt für Backups von Docker Volume Inhalten!