Linux: Docker Images in Sparse-Datei kopieren
Docker nutzt verschiedene Treiber (storage driver), um seine Images abzuspeichern. Einer davon ist der device mapper storage driver.
Nutzt man diesen Treiber, so werden die Images in einer Datei unter /var/lib/docker/devicemapper/devicemapper/data
abgelegt. Die Datei wird mit einer Größe von 100 GB angelegt, allerdings als sparse file.
Das heißt, dass der Speicher im darunter liegenden Dateisystem erst belegt wird, wenn wirklich Daten in die Datei geschrieben werden.
Kopiert man allerdings die Datei (z.B. mit rsync) auf eine andere Festplatte, kann es sein, dass die Datei am Ziel die volle Größe belegt. Um das rückgängig zu machen, kann man die Datei wieder als sparse file kopieren:
cp --sparse=always sparse-file.img file.img
mv sparse-file.img file.img