Du kan også dele et Docker -volum til mange containere. La oss snakke om et scenario for å finne ut hvorfor det er viktig.
La oss si at du har en PHP -webapplikasjon. Nå vil du teste om det fungerer på PHP versjon 5.4, 7.0, 7.1 og 7.2. Du kan opprette et Docker -volum, la oss kalle det Webapp. Kopier deretter kildekodefilene til PHP Web -appen din til Docker -volumet Webapp. Da kan du lage containere med forskjellige PHP -versjoner og feste Docker -volumet Webapp til Webroot av alle disse containerne. På den måten kan du enkelt teste hvordan webappen din presterer på forskjellige PHP -versjoner.
I denne artikkelen vil jeg vise deg hvordan du bruker Docker -volumer for å dele data mellom containere og vertsdatamaskinen. La oss komme i gang.
Før du kan legge til et Docker -volum i beholderen, må du opprette et Docker -volum.
For å lage et Docker -volum (la oss si Data1), kjør følgende kommando:
$ docker volum opprette data1
Data1 Volumet skal opprettes.
Oppføring Docker Volumes:
Du kan liste opp alle Docker -volumene du opprettet med følgende kommando:
$ docker volumliste
Som du ser er alle dockervolumene oppført. Akkurat nå har jeg bare Data1 Docker -volum. Hvis jeg opprettet mer, ville det dukket opp her.
Inspiserer Docker Volumes:
Du kan se mer informasjon om et bestemt Docker -volum (la oss si Data1) med følgende kommando:
$ docker volum inspiser data1
Som du kan se, mye informasjon om Data1 Volumet er oppført i JSON -format. Den viktigste er Mountpoint. Mountpoint forteller deg banen til det lokale filsystemet der volumet er montert. Her, The Data1 Volumet er montert på /var/lib/docker/volum/data1/_data På mitt lokale filsystem. Jeg vil vise deg hvordan du kan endre data på Docker -volumene fra vertsdatamaskinen din i en senere del av denne artikkelen nedenfor.
Legge til volumer til containere og dele volum mellom containere:
Nå skal jeg lage en enkel docker -container fra httpd: 2.4 Docker -bilde for å kjøre Apache 2 Webserver. Så skal jeg montere Data1 volum til /usr/local/apache2/htdocs Katalog for Docker Container. Jeg vil også gi beholderen et navn (la oss si www) bare for å enkelt administrere det.
For å gjøre det, kjør følgende kommando:
$ docker run -d -it -name = www -mount source = data1, destination =/usr/local/apache2/htdocs
httpd: 2.4
Beholderen www bør opprettes.
Nå for å sjekke om Data1 Volumet ble montert på www Container, kjør følgende kommando:
$ docker inspiser www
Det er en lang liste over informasjon. Men på Ridedyr, Du kan se det, navnet på volumet er Data1, den er montert på /usr/local/apache2/htdocs på www container.
Nå skal jeg koble til www beholder og kjører bash Skall der med følgende kommando:
$ docker exec -it www bash
Som du ser, kjører bash shell.
La oss nå lage en enkel HTML -fil i /usr/local/apache2/htdocs katalog hvor Data1 Volumet er montert.
$ ECHO "Hello World">/usr/local/apache2/htdocs/index.html
Nå gå ut av www Docker Container med følgende kommando:
$ exit
Nå finn ut IP -adressen til www Beholder med følgende kommando:
$ docker inspiser www | grep adresse
Som du ser er IP -adressen til WWW -containeren 172.17.0.2 (i mitt tilfelle).
Når jeg får tilgang til www Container fra nettleseren, du kan se at siden jeg nettopp opprettet vises.
Nå skal jeg lage en annen beholder www2 og fest Data1 volum til det på samme måte og se om endringene i Data1 volum (montert i /usr/local/apache2/htdocs i www og www2 beholder) fra den ene beholderen er synlig for den andre beholderen.
For å lage en ny beholder www2, og fest Data1 Volum til det, kjør følgende kommando:
$ docker run -d -it -name = www2 -mount source = data1, destination =/usr/local/apache2/htdocs
httpd: 2.4
La oss nå finne IP -adressen til www2 Beholder med følgende kommando:
$ docker inspiser www2 | grep adresse
Som du ser, får jeg den samme siden når jeg får tilgang til www2 Container fra en nettleser. Det betyr at dataene fra www Beholderen vedvarte og delte til www2 container.
Nå skal jeg gjøre endringer i indeks.html (I Data1 volum montert i /usr/local/apache2/htdocs) Side fra www2 beholder og sjekk om endringen reflekterer for begge www og www2 containere.
Som du kan se, endringene som er gjort i en beholder (www2 i dette tilfellet) gjenspeiles til den andre beholderen (www i dette tilfellet).
Få tilgang til Docker -volumer fra vertsdatamaskin:
MERK: For at dette skal fungere, må du være logget inn som rot bruker.
Du kan kjøre følgende kommando for å finne banen til Data1 Docker -volum i vertsdatamaskinen din:
# docker volum inspiser data1
Som du kan se, Data1 Volumet er i /var/lib/docker/volum/data1/_data Katalog for vertsdatamaskinen min.
Naviger nå til /var/lib/docker/volum/data1/_data Katalog med følgende kommando:
# CD/var/lib/docker/volum/data1/_data
Som du kan se, indeks.html fil vi nettopp opprettet er der.
# ls
Også innholdet i indeks.html filen er den samme.
La oss nå redigere indeks.html fil og se om endringene gjenspeiles i www og www2 containere.
# Nano Index.html
Jeg endret innholdet i indeks.html fil til dette:
Som du ser gjenspeiles endringene til www og www2 containere.
Hvis du vil, kan du også slette et Docker -volum. For å slette et Docker -volum, la oss si Data2, Kjør følgende kommando:
$ docker volum rm data2
Docker -volumet Data2 bør slettes permanent.
Slik deler du Docker -volumer mellom containere og vertsdatamaskinen. Takk for at du leste denne artikkelen.