Auch wenn sich viel Technik hinter Docker durch Programme wie Portainer verstecken lässt, so muss man für den Umzug von Volumes doch selber Hand anlegen.
Hier beschreibe ich den Umzug von Docker Volumes unter Docker Version 29 von einer Debian 12 Maschine zu einer anderen.
Volumes finden
Alle Volumes auf dem alten System anzeigen lassen:
docker volume ls
DRIVER VOLUME NAME
local registry_registry_data
Speicherort finden
Den Speicherort des Volumes herausfinden:
docker inspect registry_registry_data
[
{
"CreatedAt": "2023-12-20T18:49:46Z",
"Driver": "local",
"Labels": {
"com.docker.compose.project": "registry",
"com.docker.compose.version": "2.20.2",
"com.docker.compose.volume": "registry_data"
},
"Mountpoint": "/var/lib/docker/volumes/registry_registry_data/_data",
"Name": "registry_registry_data",
"Options": null,
"Scope": "local"
}
]
Speicherort finden
Den Container beenden, falls z.B. eine Datenbank läuft die erst auf das Dateisystem zurückgeschrieben werden muss.
docker stop registry
Kopieren
Den Inhalt des Volumes kopieren:
scp -r /var/lib/docker/volumes/registry_registry_data root@new_docker_host:/var/lib/docker/volumes/
Symlinks
Enthält das Volume Symlinks, so schlägt der Kopiervorgang fehl:
scp: open local "/var/lib/docker/volumes/registry_registry_data/_data/symlinked_file": No such file or directory
In diesem Fall hilft uns rsync die symlinks zu kopieren:
rsync -avz -e ssh /var/lib/docker/volumes/registry_registry_data/ root@new_docker_host:/var/lib/docker/volumes/registry_registry_data