L’uso quotidiano di Docker come ambiente di sviluppo crea, oltre a notevoli vantaggi, un grosso problema: l’esaurimento veloce dello spazio a disposizione.
Il mio hard disk SSD si è infatti saturato dopo la Dockerizzazione di una decina di progetti. Tra volumi e immagini docker è arrivato ad occuparmi 20 giga; questo ha lasciato solo 3 giga di spazio residuo.
Per un nuovo progetto devo importare un backup di Mongo di 10 giga. Chiaramente questo risulta impossibile allo stato attuale.
Ho quindi dovuto trovare una soluzione veloce e semplice al problema. La soluzione al problema è stato spostare sull’hard disk secondario il materiale che Docker va a creare nei nostri hd.
Come si spostano i file di Docker senza perdere tutti i dati locali?
I passaggi che ho seguito sulla mia macchina di sviluppo (sistema operativo Ubuntu / PopOs) sono:
1. Fermare il servizio
sudo service docker stop
2. Aggiungere un file di configurazione per dire a Docker dove salvare i file
Creare il file /etc/docker/daemon.json e indicare la destinazione preferita ponendo il percorso accanto alla chiave graph.
L’esempio qui sotto posiziona il contenuto dei file generati da Docker all’interno di un generico hard disk chiamato hd-esterno.
{
"graph": "/hd-esterno/docker"
}
3. Spostare i file di docker nella nuova cartella
Ho spostato i file nell’hd esterno col comando rsync.
sudo rsync -aP /var/lib/docker/ /hd-esterno/docker
4. Riavviare il servizio
sudo service docker start
Dopo aver verificato il corretto funzionamento e aggiornamento dei dati è possibile procedere con la cancellazione dell’ormai vecchio archivio.
5. Verificare il corretto funzionamento e cancellare i vecchi dati
sudo rm -rf /var/lib/docker.old
A questo punto si potrà tornare ad usare docker serenamente. Nel mio caso potrò tornare a sviluppare utilizzando il famoso backup di 10 giga.
La individuazione di questa semplice e serena procedura è frutto in buona parte della lettura di questo articolo: How to move docker data directory to another location on Ubuntu di Augusto Destrero.
Rispondi