Conservare e condividere con i volumi Docker

Conservare e condividere con i volumi Docker
In Docker, puoi scrivere dati sul livello scrittabile. Ma i dati non persistono dopo che un contenitore si spegne. Inoltre, non è facile spostare i dati da un contenitore a un altro. Naturalmente, la memorizzazione e la condivisione dei dati sono talvolta necessarie tra i servizi.

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 /app
root@1312ea074055:/app# ls
root@1312ea074055:/app# touch create-on-server1.TXT
root@1312ea074055:/app# ls
creato su server1.TXT

Quindi 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 /src
root@77cd51945461:/src# ls
creato su server1.TXT
root@77cd51945461:/src# touch creato-on-server2.TXT
root@77cd51945461:/src# ls -1
creato su server1.TXT
creato su server2.TXT

Nella 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 test
root@a6620da1eea1:/test# ls -1
creato su server1.TXT
creato su server2.TXT
root@a6620da1eea1:/test# touch creato su server3.TXT
Touch: Impossibile toccare 'creato su server3.txt ': file system di sola lettura

Puoi 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:

  • https: // docs.Docker.com/archiviazione/
  • https: // docs.Docker.com/stoccaggio/volumi/
  • https: // docs.Docker.com/Storage/Bind-Mounts/
  • https: // docs.Docker.com/Storage/tmpfs/
  • https: // www.digitaleceo.com/community/tutorial/How-to-Share-Data-mezzo-Docker-container