CodeGym /Corsi /Docker SELF /Fondamenti di archiviazione dei dati in Docker

Fondamenti di archiviazione dei dati in Docker

Docker SELF
Livello 19 , Lezione 0
Disponibile

1.1 Volumi (Volumes)

La gestione dei dati in Docker è una parte importante del lavoro con i container. I container stessi sono effimeri, il che significa che i dati al loro interno verranno persi dopo che il container viene fermato o rimosso. Per conservare i dati tra i vari avvii e assicurarne una memorizzazione a lungo termine, Docker offre due principali tecnologie: volumi (volumes) e bind mounts (direttori collegati).

Volumi (Volumes)

I volumi sono risorse gestite da Docker per memorizzare i dati. Esistono indipendentemente dal ciclo di vita dei container, il che li rende utili per la memorizzazione a lungo termine. I volumi possono essere creati e gestiti da Docker, fornendo un metodo pratico per conservare dati al di fuori dei container.

Vantaggi dell'utilizzo dei volumi

  1. Isolamento dall'host: i volumi vengono memorizzati in una directory speciale sul host, gestita da Docker, che garantisce il loro isolamento.
  2. Facilità di gestione: Docker offre comandi pratici per creare, eliminare e gestire i volumi.
  3. Compatibilità e portabilità: i volumi possono essere facilmente trasferiti tra host diversi e utilizzati con vari container.

Esempio di creazione e utilizzo dei volumi

Creazione di un volume:

Terminale

docker volume create my_volume

Utilizzo del volume in un container:

In questo esempio il volume my_volume è montato nella directory /data all'interno del container my_container.

Terminale

docker run -d --name my_container -v my_volume:/data nginx

1.2 Directory Collegate (Bind Mounts)

Le directory collegate permettono di montare directory specifiche dell'host all'interno dei container. Questo consente ai container di utilizzare file e directory presenti sull'host, cosa particolarmente utile per lo sviluppo e il testing, quando è necessario lavorare con file locali.

Vantaggi dell'uso delle directory collegate:

  1. Accesso diretto ai file dell'host: i container possono utilizzare direttamente file e directory presenti sull'host.
  2. Facilità di sviluppo: gli sviluppatori possono modificare facilmente i file sull'host e vedere queste modifiche nei container in tempo reale.
  3. Flessibilità: le directory collegate possono essere qualsiasi directory sull'host, offrendo una grande flessibilità nella gestione dei dati.

Esempio di utilizzo delle directory collegate

Avvio di un container con una directory collegata:

Terminale

docker run -d --name my_container -v /path/on/host:/data nginx

In questo esempio, la directory /path/on/host sull'host viene montata nella directory /data all'interno del container my_container.

Confronto tra volumi e directory collegate:

Caratteristica Volumi Directory Collegate
Storage dei dati Gestito da Docker Gestito dall'utente
Isolamento Isolati dal file system dell'host Utilizzano il file system dell'host
Performance Ottimizzata per Docker Dipende dal file system dell'host
Applicabilità Storage di dati a lungo termine Sviluppo e testing

1.3 Esempi pratici

Esempi pratici di utilizzo

Esempio 1: Utilizzo dei volumi per un database

Per garantire l'archiviazione a lungo termine dei dati del database, si possono usare i volumi.

Creazione di un volume:

Terminal

docker volume create db_data

Avvio di un container del database utilizzando un volume:

Terminal

docker run -d --name postgres -e POSTGRES_PASSWORD=mysecretpassword -v 
db_data:/var/lib/postgresql/data postgres

Esempio 2: Utilizzo delle directory montate per lo sviluppo web

Per sviluppare un'applicazione web, si possono utilizzare directory montate, così da riflettere subito nel container le modifiche ai file locali.

Avvio di un container con directory montata:

Terminal

docker run -d --name web_dev -v $(pwd)/my_website:/usr/share/nginx/html nginx

In questo esempio la directory di lavoro corrente my_website è montata nella directory /usr/share/nginx/html del container nginx.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION