Dockerfile Volumes

Dockerfile Volumes
Når du kjører en Docker -beholder, er ingen av dataene i den beholderen lagret. Det jeg mener er, la oss si at du startet en Docker -container. Så opprettet du noen filer og mapper i en katalog (la oss si /data) der. Når du stopper beholderen, er alle filene og mappene i /data Katalogen blir fjernet. Når du starter beholderen igjen, må du gjenskape alle filene og mappene hvis du trenger det igjen. Ingen av dataene vil vedvare.

Du kan bruke Docker -volumer for å lagre endringer i en viss katalog over Docker -containerne. Med enkle ord kan du vedvare data fra Docker -containerne ved hjelp av Docker -volum.

Du kan fortelle Docker hvilken katalog over Docker -beholderen din for å vedvare endringer i din Dockerfile Når du lager tilpassede Docker -bilder ved hjelp av Dockerfile.

I denne artikkelen vil jeg vise deg hvordan du bruker Docker -volumene i Dockerfile og hvordan man administrerer disse volumene. La oss komme i gang.

Bruke volum i Dockerfile:

I denne delen vil jeg lage et tilpasset Docker -bilde av Apache 2 -serveren fra Docker -bildet httpd: 2.4 og bruk Docker -volumer for å vedvare Apache Webroot Data.

Først må du lage en ny katalog (la oss si www3) for ditt tilpassede Docker -bilde (la oss si www: v1) og naviger til det:

$ mkdir www3 && cd www3

Nå opprette en Dockerfile med følgende kommando:

$ Touch Dockerfile

Rediger nå Dockerfile fil med Nano eller vim Text Editor.

Nano:

$ nano dockerfile

Vim:

$ vim dockerfile

Legg nå følgende linjer i den og lagre filen:

Her, Fra httpd: 2.4 betyr at basisbildet av dette tilpassede Docker -bildet er httpd: 2.4

Workdir/usr/local/apache2/htdocs Betyr, når du IOG inn i skallet (kommandolinjegrensesnittet) av containere laget av dette tilpassede bildet, vil du være i /usr/local/apache2/htdocs Katalogen til beholderen som standard.

VOLUM /usr/local/apache2/htdocs betyr, lag et nytt volum for hver av containerne som er opprettet fra dette tilpassede bildet og vedvarer alle filene i /usr/local/apache2/htdocs Katalog for den beholderen til dette nye bindet.

Nå som du har din Dockerfile Klar, det er på tide å bygge vårt tilpassede Docker -bilde (jeg vil kalle det www: v1).

For å bygge ditt tilpassede Docker -bilde www: v1 bruker Dockerfile, Kjør følgende kommando:

$ docker build -t www: v1

Det tilpassede Docker -bildet www: v1 opprettes vellykket.

Oppføring lokalt tilgjengelige Docker -bilder:

Du kan liste opp alle de lokalt tilgjengelige Docker -bildene med følgende kommando:

$ docker bildeliste

Som du kan se, www: v1 Bildet er omtrent 178 MB i størrelse, og det ble opprettet for omtrent et minutt siden.

Arbeider med Docker -volumer og containere:

Vi har laget et volumaktivert Docker -bilde www: v1 I den tidligere delen av denne artikkelen ovenfor.

For å lage en Docker -beholder (la oss si APP1) fra det tilpassede Docker -bildet www: v1, Kjør følgende kommando:

$ Docker Run -D -It -Navn = App1 www: V1

Docker -beholderen APP1 bør opprettes.

Kjør nå følgende kommando for å få opp skallet til APP1 container:

$ docker exec -it app1 /bin /bash

Som du kan se, er jeg i /usr/local/apache2/htdocs Katalog som standard.

La oss lage en indeks.html fil her med følgende kommando:

$ ekko "

Hello World (App1)

"> Indeks.html

Nå gå ut av APP1 container.

$ exit

Kjør nå følgende kommando for å finne IP -adressen til APP1 container:

$ Docker Inspect App1 | grep adresse

Som du ser er IP -adressen 172.17.0.2

Nå fra hvilken som helst nettleser, hvis du besøker siden på 172.17.0.2, bør du se indeks.html side som du nettopp opprettet.

La oss nå teste om utholdenhet fungerer eller ikke.

Stopp først APP1 Beholder med følgende kommando:

$ docker container stopp app1

Start deretter beholderen igjen med følgende kommando:

$ docker container start app1

Finn nå IP -adressen til beholderen igjen:

$ Docker Inspectapp1 | grep adresse

Som du kan se, indeks.html Siden er uendret når jeg får tilgang til den fra nettleseren min. Det betyr at Docker -volumet vedvarer data fra APP1 container.

Administrere Docker Volumes:

Du kan liste opp alle Docker -volumene på datamaskinen med følgende kommando:

$ docker volumliste

Som du kan se, har jeg 2 Docker -volumer på datamaskinen min. Den lange heksadesimale strengen som merket i skjermdumpen nedenfor, er det auto -genererte volumet for APP1 container.

Når du lager en beholder fra et Docker -bilde som bruker volumer, vil et nytt volum som dette bli generert for hver beholder du oppretter.

For eksempel opprettet jeg en annen beholder APP2 fra www: v1 Bilde som jeg bygde fra Dockerfile som bruker volum.

Som du ser genereres et nytt volum.

Begge disse volumene har forskjellige data. Dataene vedvarer for bare en beholder som den ble generert. For eksempel volumet som genereres for APP1 Container vedvarer bare data for APP1 container. Det samme gjelder for APP2 container. Volumet som genereres for APP1 Container vil ikke lagre data fra APP2 container.

Du kan fjerne volum hvis du ikke trenger det lenger. For at det skal fungere, må du stoppe og fjerne beholderen volumet er festet til. Hvis du prøver å fjerne et volum som er festet til en beholder, får du følgende feilmelding.

La oss si at du vil slette volumet for APP2 Container, kjør først følgende kommandoer for å stoppe og fjerne beholderen:

$ docker container stopp app2
$ docker container rm app2<

Fjern nå volumet som var festet til APP2 Beholder med følgende kommando:

$ Docker Volum RM 962B2D970BCD96DE860B348130A84AA86C0AAA55378B3DCE35225659679FF808

Volumet skal fjernes.

Legge til filer til volumer ved hjelp av DockerFile:

Du kan bruke KOPIERE kommando i din Dockerfile For å kopiere filer fra vertsdatamaskinen din til Docker -volumene dine. På den måten vil enhver container du oppretter fra ditt tilpassede bygde Docker -bilde ha disse filene som standard. Du kan sjekke mer om KOPIERE i Dockerfile Dokumentasjon.

Så det er i utgangspunktet slik du jobber med Docker -volumer ved hjelp av Dockerfile. Takk for at du leste denne artikkelen.