Backup e restore di volumi
Backup di Volume
Backup di un volume condiviso in un file tar
Creare la directory che ospiterà il tar:
mkdir backup
Lanciare un contenitore temporaneo:
docker run -d --rm \
-v myvol:/usr/share/nginx/html \
-v $PWD/backup:/backup ubuntu \
bash -c "cd /usr/share/nginx/html \
&& tar cvf /backup/myvol.tar ."
Si monta il volume
-v myvol:/usr/share/nginx/html
Si mappa la directory in cui viene prodotto il tar
-v $PWD/backup:/backup
Non si può usare ./backup
perchè deve essere un percorso assoluto
Si esegue una shell bash passando il comando che va nella directory coi dati presi dal volume condiviso
cd /usr/share/nginx/html
ed esegue il tar
tar cvf /backup/myvol.tar .
Al termine del comando il contenitore termina e viene rimosso
Restore di Volume
Restore da un file tar
Creazione di un volume persistente:
docker volume create myvol1
Un contenitore temporaneo che compie il restore:
docker run -d --rm \
-v myvol1:/usr/share/nginx/html \
-v $PWD/backup:/backup ubuntu \
bash -c "cd /usr/share/nginx/html \
&& tar xvf /backup/myvol.tar"
Il file è estratto e va anche nel volume myvol1
Il contenitore ubuntu termina ma il volume dati persiste
Verifica: lanciare un contenitore che usa il volume dati:
docker run -d --name web_server -v myvol1:/usr/share/nginx/html -p 8080:80 nginx
Verificare col browser a localhost:8080
Utility esterna
Scaricare l’immagine:
docker pull loomchild/volume-backup
Esempio di backup di volume:
docker run -v myvol:/volume --rm loomchild/volume-backup backup - > myvol.tar.bz2
- Il file è compresso con
bzip2
- Il volume non deve al momento essere in uso da nessun contenitore processo
Esempio di restore di volume
Creare un volume destinazione, deve essere vuoto:
docker volume create myvol1
Eseguire il restore:
cat myvol.tar.bz2 | docker run -i -v myvol1:/volume --rm loomchild/volume-backup restore -
Verificare con:
docker run -d --name web_server -v myvol1:/usr/share/nginx/html -p 8080:80 nginx
docker prune
Rimuove oggetti di docker che non sono al momento in uso da parte di nessun contenitore di processo
- Non vi è nessun contenitore processi attivo che in questo momento usa l’oggetto
- Chiede conferma
Può essere molto pericoloso
docker volume prune
- rimuove i volumi persistenti non in uso
Meglio usare: docker volume rm
nome
- il solo volume col nome
docker network prune
- rimuove le reti non in uso
Meglio usare: docker network rm
nome
- la sola rete col nome
docker image prune
- rimuove le immagini non in uso
Meglio usare: docker image rm
nome
- la sola immagine col nome