Nel caso di Docker , i dati saranno conservati all'interno del contenitore. E quando rimuoviamo il contenitore, i dati andranno persi. In questa guida impareremo come creare volumi docker, come collegarlo ai contenitori e come condividere lo stesso volume su due o più contenitori per l'archiviazione dei dati.
Se non conosci ancora le basi della finestra mobile, fai riferimento alla seguente guida:
- Guida introduttiva a Docker
Perché abbiamo bisogno di volumi per Docker?
- Eliminando i contenitori, i volumi non verranno eliminati.
- Attacca o stacca il volume ai contenitori.
- Condividi volumi (archiviazione/dati) tra contenitori diversi.
- Disaccoppiare i contenitori dallo stoccaggio.
- Memorizza volume su host o cloud remoto.
Possiamo avere una divisione logica dei dati così come il contenitore. Possiamo preservare i dati in un modo che se li rimuoviamo
il contenitore quindi saranno presenti anche i nostri dati. Quindi, dopo aver distrutto il contenitore, possiamo allegare il volume a tutti i contenitori esistenti e a un nuovo contenitore.
Guida introduttiva ai volumi Docker
Il volume della finestra mobile comando visualizzerà i dettagli dei comandi del volume con cui possiamo creare un volume, esaminare i dati dettagliati del volume, elencare i volumi disponibili e rimuovere i volumi.
# docker volume
Visualizza la sezione della guida del comando "volume docker"
Creazione di volumi Docker
La sintassi per creare un volume Docker è:
docker volume create <volume_name>
Esempio:
# docker volume create devops_volume
Il comando precedente creerà un volume della finestra mobile denominato devops_volume .
crea il volume della finestra mobile
Elenco dei volumi della finestra mobile
Per elencare tutti i volumi Docker creati, esegui:
# docker volume ls
elenca i volumi della finestra mobile
Ispezione dei volumi della finestra mobile
Il controllo del volume della finestra mobile comando ti fornirà i dettagli sulla creazione del volume, posizione, nome e ambito.
Sintassi:
docker volume inspect <volume_name>
Lascia che ti mostri i dettagli di un volume Docker denominato devops_volume .
# docker volume inspect devops_volume
ispeziona i volumi della finestra mobile
Creazione di contenitori con il volume allegato
Sintassi:
docker container create --name <container_name> -it --mount source<volume_name>,target=/<folder_Name> <image_name>
Esempio:
# docker container create --name myBusyBox1 -it --mount source=devops_volume,target=/app busybox
crea un contenitore con il volume allegato
Per verificare se il contenitore è stato creato o meno, utilizza docker ps -a comando:
Output del comando "docker ps"
Contenitori di partenza
Per avviare il container appena creato, ad esempio myBusyBox1 , esegui:
# docker container start myBusyBox1
avviare i contenitori docker
Come puoi vedere nello screenshot qui sopra, il contenitore myBusyBox1 è stato creato 8 minuti fa ed è stato avviato 6 secondi fa.
Copiare file tra contenitori da un volume condiviso
Creiamo uno scenario in cui creeremo il file in un contenitore nella posizione condivisa e proveremo ad accedere al file da un altro contenitore.
Abbiamo già creato un contenitore chiamato myBusyBox1. Creiamone un altro, ad esempio myBusyBox2 .
crea un contenitore
Ora abbiamo due contenitori in esecuzione, myBusyBox1 e myBusyBox2.
Connettiamoci al primo container e creiamo un file all'interno della /app cartella.
# docker exec -it myBusyBox1 sh
Il comando sopra ti porterà all'interno del contenitore.
Quindi, crea una nuova cartella chiamata devops all'interno della cartella /app ed esci dal primo contenitore.
connettersi al primo container
Ora copia un file, ad esempio index.html , dal sistema locale alla posizione /app/devops/ del contenitore myBusyBox1.
# docker container cp index.html myBusyBox1:/app/Devops
Ora connettiti a un altro secondo contenitore, ad esempio myBusyBox2 e verificalo all'interno di /app/devops cartella index.html il file è presente o meno.
# docker exec -it myBusyBox2 sh
connettersi al secondo contenitore
Dallo screenshot sopra viene confermato che entrambi i contenitori condividono lo stesso volume.
Possiamo controllare la posizione del punto di montaggio del volume utilizzando controllo volume Docker comando come di seguito:
# docker volume inspect devops_volume
comando docker ispeziona volume
Come puoi vedere, la posizione del punto di montaggio è /var/lib/docker/volumes/devops_volume/_data .
Andiamo alla posizione del punto di montaggio e vediamo se il file copiato è disponibile o meno.
punto di montaggio dei volumi Docker
Nella posizione di Mountpoint abbiamo trovato lo stesso file.
Elimina i volumi della finestra mobile
La sintassi per eliminare un volume è:
docker volume rm <volume_name>
Eliminiamo il volume chiamato devops_volume .
# docker volume rm devops_volume
eliminare un volume della finestra mobile
Nello screenshot sopra, stiamo cercando di eliminare il volume ma non siamo in grado di eliminarlo perché il volume è già in uso. Quindi per prima cosa dobbiamo eliminare il contenitore e liberare il volume. E poi possiamo eliminare il volume.
Per farlo, rimuovi prima tutti i contenitori in esecuzione usando il comando:
# docker rm –f $(docker ps -aq)
E poi rimuovi il volume:
# docker volume rm devops_volume
elimina i volumi della finestra mobile
Elimina tutti i volumi contemporaneamente
Utilizzo di docker rm comando, possiamo rimuovere un volume alla volta. Se disponiamo di più volumi e desideriamo eliminare tutti i volumi, dobbiamo utilizzare prune comando.
Creiamo alcuni volumi:
creare volumi Docker
Ora elimina tutti i volumi della finestra mobile contemporaneamente usando il comando:
# docker volume prune
elimina tutti i volumi della finestra mobile contemporaneamente
Vedere? Abbiamo eliminato tutti i volumi in una volta sola.
Lettura consigliata:
- Spiegazione dei concetti di rete Docker
- Come aggiornare automaticamente i contenitori Docker in esecuzione
- ctop – Uno strumento di monitoraggio della riga di comando per i container Linux
- Portainer:il modo più semplice per gestire Docker
- PiCluster:una semplice applicazione di gestione Docker basata sul Web
- Dockly:gestisci i container Docker dal terminale
Informazioni sull'autore:
Dhruv Tiwari è un ingegnere DevOps che ama automatizzare le cose, lavorare con Linux su larga scala e sognare il giorno in cui i sistemi saranno abbastanza intelligenti da non dover mai accedere a una macchina Linux. Viaggio di CI/CD dal codice sorgente alla distribuzione del codice alla produzione.