2.8 KiB
Volumi
Per impostazione predefinita, tutte le operazioni eseguite all'interno di un container Docker vengono scritte in un layer scrivibile del container stesso. Questo approccio presenta due principali limitazioni: innanzitutto, i dati scritti in questo layer vengono persi quando il container viene eliminato; inoltre, tali dati sono strettamente legati a uno specifico container, rendendone difficile lo spostamento o la condivisione dei dati con altri container.
Docker offre due soluzioni per garantire la persistenza dei dati:
-
Bind mounts
: consentono uno scambio bidirezionale tra una cartella (o un file) definita sull'host e una cartella (o file) defina all'interno del container. Questa soluzione è particolarmente utile quando si desidera rendere disponibili all'interno del container risorse presenti sull'host, come file di configurazione -
Volumi
: rappresentano il metodo migliore per garantire la persistenza dei dati. I volumi possono essere condivisi tra più container e offrono grande flessibilità, poiché non richiedono che il sistema host disponga di un path specifico da montare nel container. I volumi sono gestiti direttamente da Docker
I volumi, quando Docker è eseguito come utente root, sono mappati nella directory /var/lib/docker/volumes
. Se Docker è eseguito in modalitá rootless, in /home/user/.local/share/docker/volumes
, mentre con Podman sono localizzati in /home/user/share/containers/storage/volumes
.
Comandi principali
Per creare un volume da associare successivamente a uno o più container, è disponibile il comando docker volume create
. Questo comando genera un volume anonimo, identificato da un hash alfanumerico generato da Docker. Per creare un volume con un nome specifico, si utilizza il comando docker volume create volume_name
.
I volumi sono entità indipendenti che possono esistere anche senza essere associati a un container.
A meno che non siano implementati limiti di quota, il volume crescerà in dimensione all'aumentare dei dati contenuti.
Elencare i volumi
Per visualizzare l'elenco dei volumi esistenti, esiste il comando docker volume ls
.
Rimuovere i volumi
Per rimuovere tutti i volumi anonimi non in uso da alcun container, si utilizza il comando docker volume prune
. Per eliminare tutti i volumi inutilizzati, si può utilizzare docker volume prune -a
.
Ispezionare i volumi
Per ispezionare un volume specifico, si utilizza il comando docker volume inspect <volume_name>
oppure docker volume inspect <hash>
.
L'associazione tra il volume e il container che lo utilizza non è registrata nel volume stesso, ma nel container. In altre parole, il volume non riporta i suoi utilizzatori; sono i container a registrare il volume che utilizzano. Pertanto, per trovare l'associazione, si può utilizzare il comando docker inspect <container_name>
.