Docker Mappare un volume
Creare un collegamento tra una directory all'interno di un container e uno spazio di archiviazione persistente
Mappare una cartella
In Docker, mappare un volume significa creare un collegamento tra una directory all'interno di un container e uno spazio di archiviazione persistenteche esiste al di fuori del container stesso. Questo permette di conservare i dati in modo permanente, anche se il container viene eliminato o ricreato.
Perché è utile il mapping
- Condivisione dei dati: Permette di condividere facilmente dati tra l'ambiente host e il container, senza doverli copiare manualmente.
- Persistenza dei dati: I dati mappati in un volume Docker persistono anche dopo l'arresto e la rimozione del container, garantendo la loro accessibilità in futuro.
- Esecuzione di applicazioni con dati specifici: Permette di eseguire applicazioni che richiedono l'accesso a file o cartelle specifiche presenti sull'host.
Come eseguire il mapping di volume
Per mappare un volume, si utilizza la direttiva `VOLUME` nel Dockerfile.
Esempio
VOLUME /app/data
docker run -v /my/data:/app/data my-image
In questo esempio, la directory `/my/data` sul sistema host viene mappata alla directory `/app/data` all'interno del container.
I dati presenti in `/my/data` saranno accessibili all'applicazione all'interno del container e le modifiche apportate ai dati verranno salvate in `/my/data` sul sistema host.
Mapping di montaggio temporaneo
* I montaggi temporanei consentono di mappare una directory o un file presente sul sistema host ad un container in esecuzione.* I dati contenuti in un montaggio temporaneo non persistono dopo l'arresto del container.
* Per eseguire il mapping di un montaggio temporaneo, si utilizza la flag `-m` o `--mount` al comando `docker run`.
Esempio
docker run -m /my/data:/app/data:ro my-image
In questo esempio, la directory `/my/data` sul sistema host viene mappata in sola lettura alla directory `/app/data` all'interno del container.
L'applicazione all'interno del container potrà leggere i dati da `/app/data`, ma non potrà modificarli.