Lagring og deling med Docker Volumes

Lagring og deling med Docker Volumes
I Docker kan du skrive data om det skrivbare laget. Men dataene vedvarer ikke etter at en beholder. Det er heller ikke lett å flytte dataene fra en beholder til en annen. Naturligvis er datalagring og deling noen ganger nødvendig mellom tjenester.

Docker har tre typer datamester som kan hjelpe - volumer, bindede monteringer og TMPF -er. Volum lagrer data i vertens filsystem, men det administreres av Docker. Bind Mounts hjelper med å lagre data hvor som helst på vertssystemet, og brukere kan direkte endre filene fra vertens egne prosesser. TMPFS -monteringene er bare lagret i vertens minne. Docker -volum er det beste alternativet fordi de er de tryggeste å bruke.

Hvordan bruke Docker Volumes

La oss prøve et praktisk eksempel. Vi skal lage noen få Ubuntu -containere som deler samme volum.

Først ønsker vi å lage volumet med følgende kommando:

$ docker volum opprette min-common-vol

Nå kan vi sjekke om volumet eksisterer:

$ docker volum ls
Drivervolumnavn
Lokal My-Common-Vol

Vi kan ytterligere inspisere volumet for å sjekke dets egenskaper:

$ docker volum inspiser min-felles vol
[

"CreateTat": "2018-04-06T07: 43: 02Z",
"Driver": "Lokal",
"Etiketter": ,
"MountPoint": "/var/lib/docker/volum/my-common-vol/_data",
"Navn": "My-Common-Vol",
"Alternativer": ,
"Omfang": "Lokal"

]

Det er viktig å huske at MountPoint faktisk er inne i VM som Docker kjører på. Så det er ikke direkte tilgjengelig.

La oss nå starte vår første server med My-Common-Vol.

(Merk for Docker Run -kommandoen, du kan bruke -monterings- og -v -alternativene til å montere et volum. Syntaksen til de to er forskjellig. Vi vil bruke det nyeste alternativet, da det er det siste.)

$ Docker Run-Name Server1-Mount Source = My-Common-Vol, Target =/App -It Ubuntu

Vi monterer My-Common-Vol to /App-mappen på Server1 Docker Container. Kommandoen ovenfor skal logge deg på Ubuntu Server1. Fra kommandolinjen gå til /app -mappen og opprett en fil:

root@1312a074055: /# cd /app
root@1312a074055:/app# ls
root@1312a074055:/app# touch created-on-server1.tekst
root@1312a074055:/app# ls
opprettet-på-server1.tekst

Så vi har filen opprettet-på-server1.txt i /app -mappen.

La oss opprette en andre server og montere det samme My-Common-Vol-volumet til det:

$ Docker Run-Name Server2-Mount Source = My-Common-Vol, Target =/Src -It Ubuntu

Nå kan vi gå til /SRC -mappen i Server2, se etter Server1 -filer og opprette en ny fil:

root@77cd51945461: /# cd /src
root@77cd51945461:/src# ls
opprettet-på-server1.tekst
root@77cd51945461:/src# touch opprettet-på-server2.tekst
root@77cd51945461:/src# ls -1
opprettet-på-server1.tekst
Opprettet-på-server2.tekst

I /SRC-mappen ser vi den opprettet-på-server1.TXT eksisterer allerede. Vi legger til opprettet-på-server2.tekst. Vi kan sjekke tilbake på Server1 og se den opprettet-på-server2.TXT dukker opp.

La oss starte en ny container-server3 som bare har skrivebeskyttet tilgang til volumet My-Common-Vol:

$ Docker Run-Name Server3-Mount Source = My-Common-Vol, Target =/Test, ReadOnly -It Ubuntu

Så vi har opprettet Server3 med My-Common-Vol montert på /test.

La oss prøve å skrive noe i /Test:

root@a6620da1eea1:/# cd test
root@a6620da1eea1:/test# ls -1
opprettet-på-server1.tekst
Opprettet-på-server2.tekst
root@a6620da1eea1:/test# touch opprettet-på-server3.tekst
berøring: kan ikke berøre 'opprettet-på-server3.txt ': skrivebeskyttet filsystem

Du kan se at vi ikke kan skrive til min-Common-Vol fra Server3.

Du kan slette volum. Men du må fjerne alle tilknyttede containere før du kan prøve. Ellers får du en feil som denne:

$ docker volum rm my-common-vol
Feilsvar fra Daemon: Kan ikke fjerne volum: Fjern min-Common-VOL:
Volumet er i bruk - [1312A07405528BC65736F56692C06F04280779FD283A81F59F8477F28AE35BA,
77cd51945461fa03f572a6830a98a16ece47b4f840c2edfc2955c7c9a6d69d2,
A6620da1eea1a39d64f3acdf82b6d70309ee2f8d1f2c6b5d9c98252d5792a59]

I vårt tilfelle kan vi fjerne beholderne og volumet som dette:

$ docker container rm server1
$ docker container rm server2
$ docker container rm server3
$ docker volum rm my-common-vol

Hvis du vil montere flere volumer, tillater “Docker Run” -kommando -mount -alternativet også det også.

Videre studier:

  • https: // dokumenter.Docker.com/lagring/
  • https: // dokumenter.Docker.com/lagring/volum/
  • https: // dokumenter.Docker.com/lagring/bind-mounts/
  • https: // dokumenter.Docker.com/lagring/tmpfs/
  • https: // www.Digitalocean.com/community/tutorials/how-to-share-data-between-docker-containers