Prima di apportare qualsiasi modifica o eseguire operazioni di manutenzione sui volumi della propria infrastruttura Docker, è vivamente consigliato eseguire un backup di questi volumi. Vediamo quindi in questo semplice tutorial come procedere al backup di un docker volume.
Backup di un docker volume utilizzando tar
Per eseguire un backup compresso del docker volume possiamo utilizzare un container temporaneo Alpine. Il comando da lanciare è essenzialmente il seguente:
docker run --rm -v my-software_dbdata:/data -v $(pwd):/backup alpine tar -czvf /backup/my-software_dbdata.tar.gz -C /data .
Questo comando semplicemente esegue queste operazioni:
- Monta il volume sulla cartella /data all’interno del docker container Alpine
- Salva il backup compresso (tar.gz) nella propria working directory
Una volta che il comando di backup ha terminato, verifichiamo l’esistenza del file di backup semplicemente lanciando:
ls -lh my-software_dbdata.tar.gz
Copiare i dati di un docker volume in una host directory
Se preferiamo invece copiare tutti i dati contenuti nel docker volume in una host directory possiamo invece seguirela seguente procedura.
Creiamo anzitutto la cartella che conterrà i dati provenienti dal nostro docker volume:
mkdir -p ~/docker-backups/my-software_dbdata
Lanciamo quindi questo comando per copiare il contenuto del docker volume nella cartella che abbiamo appena creato:
docker run --rm -v my-software_dbdata:/data -v ~/docker-backups/my-software_dbdata:/backup alpine sh -c "cp -a /data/. /backup/"
Eseguire il restore di un backup di un docker volume
Per eseguire il restore di un backup compresso di un docker volume, lanciamo il seguente comando:
docker run --rm -v my-software_dbdata:/data -v $(pwd):/backup alpine tar -xzvf /backup/my-software_dbdata.tar.gz -C /data
Se si è invece eseguita una direct copy dei dati in una host directory, lanciamo il seguente comando:
docker run --rm -v my-software_dbdata:/data -v ~/docker-backups/my-software_dbdata:/backup alpine sh -c "cp -a /backup/. /data/"