Docker ha tre tipi di supporti dati che possono aiutare: volumi, supporti per legami e TMPFS. Volumi archivia i dati nel filesystem dell'host ma sono gestiti da Docker. Bind Mounts aiuta a archiviare i dati ovunque sul sistema host e gli utenti possono modificare direttamente i file dai processi dell'host. I supporti TMPFS sono archiviati solo nella memoria dell'host. I volumi Docker sono l'opzione migliore perché sono i più sicuri da usare.
Come utilizzare i volumi Docker
Proviamo un esempio pratico. Creeremo alcuni contenitori Ubuntu che condividono lo stesso volume.
Innanzitutto, vogliamo creare il volume con il seguente comando:
$ Docker Volume Crea my-comune-vol
Ora possiamo verificare se esiste il volume:
$ Docker Volume LS
Nome volume del driver
My-Common-Vol locale
Possiamo ispezionare ulteriormente il volume per verificare le sue proprietà:
$ Docker Volume Ispezionare My-Common-Vol
[
"CreatedAT": "2018-04-06T07: 43: 02Z",
"Driver": "Local",
"Etichette": ,
"Mountpoint": "/var/lib/docker/volumes/my-common-vol/_data",
"Nome": "My-Common-Vol",
"Opzioni": ,
"Scope": "Locale"
"
È importante ricordare che Mountpoint è effettivamente all'interno della VM su cui Docker sta correndo. Quindi, non è direttamente accessibile.
Ora iniziamo il nostro primo server con My-Common-Vol.
(Nota per il comando Docker Run, è possibile utilizzare le opzioni -mount e -v per montare un volume. La sintassi dei due è diversa. Utilizzeremo l'ultima opzione -MOUNT in quanto è l'ultima.)
$ Docker RUN --Name Server1-Mount Source = My-Common-Vol, Target =/App -it Ubuntu
Stiamo montando la cartella My-Common-Vol a /App sul contenitore Docker Server1. Il comando sopra dovrebbe accedere a Ubuntu Server1. Dalla riga di comando vai alla cartella /app e crea un file:
root@1312ea074055: /# cd /appQuindi abbiamo il file creato su server1.txt nella cartella /app.
Andiamo a creare un secondo server e montare lo stesso volume My-Common-Vol:
$ Docker RUN --Name Server2-Source-Mount = My-Common-Vol, Target =/Src -it Ubuntu
Ora possiamo andare alla cartella /SRC in Server2, controllare i file Server1 e creare un nuovo file:
root@77cd51945461: /# cd /srcNella cartella /SRC, vediamo che create su server1.txt esiste già. Aggiungiamo creato su Server2.TXT. Possiamo ricontrollare su Server1 e vedere che creato su Server2.txt si presenta.
Iniziamo un nuovo container Server3 che avrà solo accesso in sola lettura al volume My-Common-Vol:
$ Docker RUN-NAME SERVER3-MOUNT Source = My-Common-Vol, Target =/Test, ReadOnly -it Ubuntu
Quindi abbiamo creato Server3 con My-Common-Vol montato su /Test.
Proviamo a scrivere qualcosa in /Test:
root@a6620da1eea1:/# cd testPuoi vedere che non possiamo scrivere a My-Common-Vol da Server3.
Puoi eliminare i volumi. Ma devi rimuovere tutti i contenitori associati prima di poter provare. Altrimenti, otterrai un errore come questo:
$ Docker Volume Rm My-Common-Vol
Risposta di errore da Daemon: Impossibile rimuovere il volume: rimuovere My-Common-Vol:
Il volume è in uso - [1312EA07405528bc65736f56692c06f04280779fd283a81f59f8477f28ae35baba,
77CD51945461FA03F572EA6830A98A16ECE47B4F840C2EDFC2955C7C9A6D69D2,
A6620DA1EEA1A39D64F3ACDF82B6D70309EE2F8D1F2C6B5D9C98252D5792EA59]
Nel nostro caso, possiamo rimuovere i contenitori e il volume come questo:
$ Docker Container RM Server1
$ Docker Container RM Server2
$ Docker Container RM Server3
$ Docker Volume Rm My-Common-Vol
Inoltre, se si desidera montare più volumi, l'opzione del comando "Docker run" -Mount lo consente anche.
Ulteriori studi: