3.1 Nozioni di base sul montaggio dei volumi
Il montaggio dei volumi (volumes) nei container è una delle funzioni chiave di Docker, che permette di salvare i dati al di fuori dei container, garantendo il loro salvataggio a lungo termine e la disponibilità. I volumi possono essere utilizzati per vari scopi, tra cui il salvataggio di file di configurazione, database, log e altri dati importanti. In questa lezione vedremo come montare i volumi nei container e forniremo esempi pratici.
Nozioni di base sul montaggio dei volumi
I volumi, come abbiamo già detto, esistono indipendentemente dal ciclo di vita dei container. Sono salvati in una directory speciale sulla macchina host e possono essere collegati a qualsiasi container.
Comando per il montaggio dei volumi
I volumi vengono montati nei container utilizzando i parametri -v
o --mount
durante l'avvio del container.
3.2 Parametro -v
Esempi di utilizzo del parametro -v
1. Montaggio di un volume nel container
Creazione di un volume e il suo montaggio nel container:
Creazione del volume:
docker volume create my_volume
Avvio del container con il montaggio del volume:
docker run -d --name my_container -v my_volume:/app nginx
In questo esempio il volume my_volume
viene montato nella directory /app
del container my_container
2. Montaggio di più volumi
Puoi montare più volumi in un unico container:
docker run -d --name my_container -v volume1:/app/data -v volume2:/app/logs nginx
In questo esempio il volume volume1
viene montato nella directory /app/data
, mentre il volume volume2
— nella directory /app/logs
.
3.3 Parametro --mount
Il parametro --mount
offre un modo più dettagliato per montare i volumi, con la possibilità di specificare vari parametri.
1. Montaggio di un volume usando --mount
docker run -d --name my_container --mount source=my_volume,target=/app nginx
Questo esempio è simile al precedente esempio con -v
, ma utilizza una sintassi più dettagliata.
2. Montaggio con parametri aggiuntivi
docker run -d --name my_container --mount source=my_volume,target=/app,readonly nginx
In questo esempio il volume è montato in modalità sola lettura (readonly
).
3.4 Esempi pratici
Esempio 1: Utilizzo dei volumi per il database
Creazione e utilizzo di un volume per conservare i dati del database.
Creazione di un volume:
docker volume create db_data
Avvio di un container di database con montaggio di un volume:
docker run -d --name postgres -e POSTGRES_PASSWORD=mysecretpassword -v
db_data:/var/lib/postgresql/data postgres
In questo esempio, i dati del database PostgreSQL vengono salvati nel volume db_data
.
Esempio 2: Utilizzo dei volumi per file di configurazione
Creazione di un volume per conservare file di configurazione e montarlo nel container.
Creazione di un volume:
docker volume create config_data
Copia dei file di configurazione nel volume:
docker run --rm -v config_data:/app busybox sh -c "echo 'dati di configurazione' > /app/config.txt"
Avvio di un container utilizzando un volume per i file di configurazione:
docker run -d --name my_app -v config_data:/app/config nginx
In questo esempio, i file di configurazione vengono conservati nel volume config_data
, che viene montato nella directory /app/config
del container.
Esempio 3: Log del container
Creazione di un volume per conservare i log del container e montarlo nel container.
Creazione di un volume:
docker volume create logs_data
Avvio di un container con montaggio di un volume per i log:
docker run -d --name my_app -v logs_data:/var/log/nginx nginx
In questo esempio, i log di Nginx vengono salvati nel volume logs_data
.
3.5 Verifica del contenuto dei volumi
Puoi controllare il contenuto di un volume montandolo su un container temporaneo.
Esempio
Esecuzione di un container temporaneo con montaggio del volume:
docker run --rm -v my_volume:/app busybox ls /app
Questo esempio mostrerà il contenuto del volume my_volume
.
Eliminazione dei volumi
Eliminazione di un volume che non è più utilizzato.
Esempio
Eliminazione del volume:
docker volume rm my_volume
Se un volume è in uso da un container, Docker mostrerà un errore. Assicurati che i container che utilizzano il volume siano fermati e rimossi.
GO TO FULL VERSION