Cosa fa#
Sottocomando Docker per creare, ispezionare, listare e rimuovere volumi. I volumi sono lo storage persistente gestito da Docker.
Sintassi#
docker volume [comando] [opzioni]
Comandi essenziali#
| Comando | Flag | Significato flag | Cosa fa |
|---|---|---|---|
docker volume ls | — | — | Lista tutti i volumi sul sistema |
docker volume inspect nome | — | — | Mostra dettagli e Mountpoint fisico del volume |
docker volume create nome | — | — | Crea un volume vuoto manualmente |
docker volume rm nome | — | — | Elimina un volume specifico |
docker volume prune | — | — | Elimina tutti i volumi non usati da container attivi |
docker ps -a --filter volume=nome | -a all, --filter filtra per criterio | — | Trova i container che usano un volume |
Combinazioni utili#
# Trova il path fisico di un volume sull'host
docker volume inspect nome_volume | grep Mountpoint
# → "Mountpoint": "/var/lib/docker/volumes/nome_volume/_data"
# Lista volumi di un progetto specifico
docker volume ls | grep nome_progetto
# Ispeziona contenuto di un volume (richiede sudo)
sudo ls /var/lib/docker/volumes/nome_volume/_data/Migrazione dati tra volumi#
Quando si rinomina un progetto o si sposta un compose, il prefisso del volume cambia e i dati vanno migrati.
# 1. Crea il nuovo volume vuoto
docker volume create nuovo_volume
# 2. Sposta i dati (richiede sudo — i volumi sono di root)
sudo bash -c 'mv /var/lib/docker/volumes/vecchio_volume/_data/* /var/lib/docker/volumes/nuovo_volume/_data/'
# 3. Verifica la migrazione
sudo ls /var/lib/docker/volumes/nuovo_volume/_data/
# 4. Avvia il compose con il nuovo volume
docker compose up -d
# 5. Verifica che il servizio funzioni correttamente
# 6. Elimina il vecchio volume
docker volume rm vecchio_volumeUsa mv sul contenuto (_data/*), non sulla directory (_data/). Spostare la directory rompe il mapping interno di Docker.
Prima di eliminare un volume vecchio, verifica sempre che il servizio giri correttamente con il nuovo.
Restore di un DB da backup#
Per verificare un backup senza toccare il DB reale:
# 1. Crea un DB temporaneo dentro il container
docker exec nome_container createdb -U utente db_test
# 2. Restore sul DB temporaneo (legge da stdin con -i)
gunzip -c backup.sql.gz | docker exec -i nome_container psql -U utente -d db_test
# 3. Verifica i dati
docker exec -it nome_container psql -U utente -d db_test -c "SELECT COUNT(*) FROM tabella;"
# 4. Elimina il DB temporaneo
docker exec nome_container dropdb -U utente db_testScenario Reale#
Un servizio viene spostato su un nuovo server. Il compose era in vecchio-progetto/ e ora e in nuovo-progetto/. Docker rinomina automaticamente i volumi con il nuovo prefisso — i dati non ci sono. Si usa la procedura di migrazione per spostare i dati dal vecchio volume al nuovo prima di avviare il compose.
Collegato a#
- system — categoria
- docker-volumes — concetto: tipi di volume, naming, quando usare cosa
- docker-compose — dove i volumi vengono dichiarati


