Funzionalità dei volumi Docker
- Condivisione dei dati del volume e dell'archiviazione tra più contenitori e filesystem host.
- Disaccoppiare i contenitori dallo stoccaggio.
- Non elimina i dati contenuti durante l'eliminazione del contenitore.
- Esegui il backup, ripristina e migra facilmente i dati.
In questo tutorial spiegheremo cos'è un volume Docker e come usarlo, oltre a come montare un volume in Docker.
Requisiti
- Un sistema che esegue Linux con Docker installato.
- È configurata una password di root root.
Sintassi di base del volume Docker
Puoi utilizzare il comando "volume mobile" per vedere tutte le opzioni disponibili con il volume:
volume mobileDovresti vedere il seguente output dopo aver inserito il comando precedente:
Utilizzo: volume docker COMANDOGestire i volumi
Comandi:
crea Crea un volume
ispeziona Visualizza informazioni dettagliate su uno o più volumi
ls Elenco volumi volume
prune Rimuovi tutti i volumi locali inutilizzati
rm Rimuovere uno o più volumi
Esegui 'docker volume COMMAND --help' per maggiori informazioni su un comando.
Crea un volume
Per creare un volume di dati, devi prima creare un volume di dati sull'host Docker e collegare il volume al contenitore.
Puoi creare un volume Docker usando il comando "docker volume create.” Ad esempio, utilizzare il comando seguente per creare un nuovo volume Docker denominato myvolume:
docker volume crea miovolumeDovresti vedere il seguente output:
miovolumePuoi elencare il tuo volume esistente usando il seguente comando:
volume mobile lsDovresti vedere il seguente output:
NOME DEL VOLUME DEL CONDUCENTElocale c2d2815ba1a75fbfe5d0a4b69d94269e55ccbc138c7d2e19504e501f1dbe634f
locale miovolume
Se vuoi vedere più informazioni sul volume, esegui il seguente comando:
docker ispeziona il mio volumeDovresti ottenere il seguente output dopo aver eseguito il comando precedente:
["CreatedAt": "2020-09-12T04:51:31Z",
"Autista": "locale",
"Etichette": ,
"Mountpoint": "/var/lib/docker/volumes/myvolume/_data",
"Nome": "miovolume",
"Opzioni": ,
"Ambito": "locale"
]
Montare un volume
A questo punto, hai un volume chiamato myvolume. In questo esempio, creerai un contenitore e monterai un miovolume sul contenitore.
Puoi usare l'opzione -mount per montare il volume. La sintassi di base per montare il volume sul contenitore è mostrata di seguito:
docker run --mount source=nome-volume,destinazione=percorso-all'interno-contenitore-immagini-dockerAd esempio, per creare un contenitore Ubuntu e montare il miovolume sul contenitore, eseguire il comando seguente:
docker run -it --name=volumecontainer --mount source=myvolume,destination=/data ubuntuQuesto comando estrarrà l'immagine Ubuntu dall'hub Docker, avvierà il contenitore in modalità interattiva con il nome volumecontainer e monterà il contenitore myvolume su /data all'interno della directory /data:
Impossibile trovare l'immagine 'ubuntu:latest' localmentepiù recente: estrazione da libreria/ubuntu
54ee1f796a1e: Pull completo
f7bfea53ad12: Pull completato
46d371e02073: Estrazione completata
b66c17bbf772: Pull completo
Riassunto: sha256:31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Stato: scaricata un'immagine più recente per ubuntu:latest
radice@06a477c4e444:/#
Puoi controllare il volume montato con il seguente comando:
[e-mail protetta]:/# lsDovresti vedere la directory dei dati nel seguente output:
bin boot data dev etc home lib lib32 lib64 libx32 media mntopt proc root esegui sbin srv sys tmp usr var
Ora creeremo un file di esempio chiamato file.txt all'interno della directory /data con il seguente comando:
echo "Questo è un file di prova!" > /dati/file.TXTUscire dal contenitore con il seguente comando:
UscitaAvvia di nuovo lo stesso contenitore con il seguente comando:
volume di avvio del contenitore dockercontenitoreQuindi, collega il contenitore in esecuzione con il seguente comando:
docker exec -it volumecontainer /bin/bashControlla se il tuo file.txt è persistente con quanto segue:
dati/file gatto cat.TXTDovresti ottenere il seguente output dopo aver inserito il comando precedente:
Questo è un file di prova!
Condividi dati tra contenitori
Puoi anche condividere i dati tra più contenitori utilizzando il volume Docker.
Come sai, abbiamo creato un volume denominato myvolume un nuovo contenitore denominato volumecontainer utilizzando questo volume. Abbiamo anche creato un file chiamato file.txt all'interno del volume.
Ora creeremo un altro contenitore chiamato volumecontainer1 con lo stesso volume myvolume usando il seguente comando:
docker run -it --name=volumecontainer1 --mount source=myvolume,destination=/data ubuntuEsegui il comando ls, come mostrato di seguito:
lsDovresti vedere la directory dei dati nel seguente output:
bin boot data dev etc home lib lib32 lib64 libx32media mnt opt proc root run sbin srv sys tmp usr var
Esegui il seguente comando per controllare il file.TXT:
gatto /dati/file.TXTDovresti vedere lo stesso contenuto che hai creato nel contenitore precedente:
Questo è un file di prova!
Monta directory come volume
Puoi utilizzare la directory situata all'interno del tuo sistema host Docker come volume e montarla sul contenitore. Puoi anche usare l'opzione -v per ottenere lo stesso risultato, come mostrato di seguito:
docker run -v "directory_name":volume_name docker_imageCrea una directory denominata /data all'interno dell'host Docker con il seguente comando:
mkdir /DatiQuindi, crea alcuni file all'interno della directory /Data:
cd /Datitocca file1.txt file2.file di testo3.TXT
Crea un nuovo contenitore utilizzando la directory /Data come volume con il seguente comando:
docker run -it --name=data1 -v /Data:/Data ubuntuQuesto comando creerà un nuovo contenitore e monterà il volume con il nome /Data.
Eseguire il comando seguente per verificare il contenuto della directory /Data:
ls -l /Dati/Dovresti vedere tutti i file che abbiamo precedentemente creato nel sistema host, come mostrato di seguito:
totale 0-rw-r--r-- 1 root root 0 Sep 12 05:41 file1.TXT
-rw-r--r-- 1 radice radice 0 Sep 12 05:41 file2.TXT
-rw-r--r-- 1 radice radice 0 Sep 12 05:41 file3.TXT
Rimuovi volume Docker
Puoi facilmente eliminare o rimuovere il volume utilizzando la seguente sintassi:
docker volume rm nome-volumeAd esempio, per rimuovere il volume denominato myvolume, eseguire il comando seguente:
docker volume rm miovolumeDovresti ricevere il seguente errore:
Risposta di errore dal demone: remove myvolume:il volume è in uso - [06a477c4e4444c0f815a1ec4a151a8
339bf53d5060c492af867bcaebe531dd5d, fd8d05a027a755f
1df004ccf62568b5d66989c2112115c8a652ddbc8eb960948]
Questo perché il tuo volume è utilizzato dal contenitore. Quindi, dovrai fermarti e rimuovere il contenitore prima di rimuovere il volume.
Per arrestare e rimuovere il contenitore, eseguire il comando seguente:
volume di arresto del contenitore dockervolume del contenitorecontainer1contenitore docker volume rm contenitore volume contenitore1
Ora puoi rimuovere facilmente il volume.
Conclusione
Nella guida sopra, hai imparato cos'è il volume Docker, come crearlo e come montarlo all'interno del contenitore. Hai anche imparato a condividere i dati tra più contenitori utilizzando il volume.