Learning Docker, del 6: Arbejde med data

I dagens del af oversættelsen af ​​en række materialer om Docker vil vi tale om at arbejde med data. Især om Docker-volumener. I disse materialer sammenlignede vi konstant Docker-programmeringsmekanismer med forskellige spiselige analogier. Vi vil ikke afvige fra denne tradition her. Lad data i Docker være krydderier. Der findes mange slags krydderier i verden, og Docker har mange måder at arbejde med data på.

Del 1: Det grundlæggende
Del 2: termer og begreber
Del 3: Dockerfiler
Del 4: Reduktion af størrelsen af ​​billeder og fremskyndelse af deres samling
Del 5: kommandoer
Del 6: arbejde med data

Learning Docker, del 6: Arbejde med data

Bemærk venligst, at dette materiale blev udarbejdet ved hjælp af Docker-motorversionen 18.09.1 ​​og API-versionen 1.39.

Data i Docker kan gemmes enten midlertidigt eller permanent. Lad os starte med midlertidige data.

Midlertidig datalagring

Der er to måder at administrere midlertidige data i Docker-containere.

Som standard gemmes filer, der er oprettet af et program, der kører i en container, i et skrivbart containerlag. For at denne mekanisme skal fungere, skal der ikke konfigureres noget særligt. Det viser sig billigt og muntert. Applikationen skal blot gemme dataene og fortsætte med at gøre sine egne ting. Men efter at beholderen ophører med at eksistere, vil de data, der er gemt på en så enkel måde, også forsvinde.

Midlertidig fillagring i Docker er en anden løsning, der er velegnet til tilfælde, hvor der kræves et højere niveau af ydeevne sammenlignet med, hvad der er opnåeligt ved brug af standard midlertidig datalagringsmekanisme. Hvis du ikke har brug for, at dine data skal opbevares længere end containeren eksisterer, kan du oprette forbindelse til containeren tmpfs - et midlertidigt informationslager, der bruger værtens RAM. Dette vil fremskynde udførelsen af ​​dataskrivning og -læsning.

Det sker ofte, at data skal gemmes, selv efter at containeren ophører med at eksistere. For at gøre dette har vi brug for vedvarende datalagringsmekanismer.

Vedvarende datalagring

Der er to måder at gøre datalevetiden længere end containerens levetid. En måde er at bruge bind mount teknologi. Med denne tilgang kan du f.eks. montere en ægte mappe til containeren. Processer uden for Docker vil også kunne arbejde med data gemt i en sådan mappe. Sådan se tmpfs mount og bind mount teknologi.

Learning Docker, del 6: Arbejde med data
Montering af tmpfs og bind mount

Ulemperne ved at bruge bind mount-teknologien er, at dens brug komplicerer datasikkerhedskopiering, datamigrering, datadeling mellem flere containere. Det er meget bedre at bruge Docker-volumener til vedvarende datalagring.

Bind Docker

En volumen er et filsystem, der er placeret på værtsmaskinen uden for containere. Volumener oprettes og administreres af Docker. Her er de vigtigste egenskaber ved Docker-volumener:

  • De er et middel til permanent opbevaring af information.
  • De er uafhængige og adskilt fra containere.
  • De kan deles mellem forskellige beholdere.
  • De giver dig mulighed for at organisere effektiv læsning og skrivning af data.
  • Mængder kan placeres på en ekstern cloud-udbyders ressourcer.
  • De kan krypteres.
  • De kan få navne.
  • Containeren kan sørge for forhåndsudfyldning af volumen med data.
  • De er praktiske til test.

Som du kan se, har Docker-volumener fantastiske egenskaber. Lad os tale om, hvordan man skaber dem.

Oprettelse af bind

Volumener kan oprettes ved hjælp af Docker- eller API-anmodninger.

Her er en instruktion i Dockerfilen, der giver dig mulighed for at oprette en volumen, når du starter en container.

VOLUME /my_volume

Når du bruger en lignende instruktion, vil Docker, efter at have oprettet containeren, oprette en volumen, der indeholder de data, der allerede findes på den angivne placering. Bemærk, at hvis du opretter en diskenhed ved hjælp af en Dockerfile, fritager dette dig ikke for behovet for at angive volumenets monteringspunkt.

Du kan også oprette volumener i en Dockerfil ved hjælp af JSON-formatet.

Derudover kan volumener oprettes ved hjælp af kommandolinjeværktøjer, mens containeren kører.

Arbejde med volumener fra kommandolinjen

▍Oprettelse af bind

Du kan oprette en selvstændig volumen med følgende kommando:

docker volume create —-name my_volume

▍Find ud af information om mængder

For at se en liste over Docker-volumener skal du bruge følgende kommando:

docker volume ls

Du kan udforske et specifikt volumen som dette:

docker volume inspect my_volume

▍Sletning af en lydstyrke

Du kan slette en lydstyrke som denne:

docker volume rm my_volume

For at fjerne alle volumener, der ikke bruges af containere, kan du ty til følgende kommando:

docker volume prune

Før du sletter mængder, vil Docker bede dig om at bekræfte denne handling.

Hvis en volumen er knyttet til en beholder, kan denne mængde ikke slettes, før den tilsvarende beholder er slettet. På samme tid, selvom containeren er fjernet, forstår Docker ikke altid dette. Hvis dette sker, kan du bruge følgende kommando:

docker system prune

Det er designet til at rydde op i Docker-ressourcer. Efter at have udført denne kommando, bør du være i stand til at slette diskenheder, hvis status tidligere var forkert.

--mount og --volume flagene

At arbejde med lydstyrker, når du kalder kommandoen docker, vil du ofte skulle bruge flag. For at oprette en volumen under oprettelse af container kan du f.eks. bruge denne konstruktion:

docker container run --mount source=my_volume, target=/container/path/for/volume my_image

I oldtiden (indtil 2017) var flaget populært --volume. I første omgang dette flag (det kan også bruges i en forkortet form, så ser det ud -v) blev brugt til selvstændige containere og flaget --mount - i et Docker Swarm-miljø. Men fra Docker 17.06 var flaget --mount kan bruges i ethvert scenarie.

Det skal bemærkes, at når du bruger flaget --mount mængden af ​​yderligere data, der skal angives i kommandoen, stiger, men af ​​flere grunde er det bedre at bruge dette særlige flag, og ikke --volume. Flag --mount er den eneste mekanisme, der giver dig mulighed for at arbejde med tjenester eller angive volumendriverindstillinger. Desuden er dette flag nemmere at arbejde med.

I de eksisterende eksempler på Docker-datamanipulationskommandoer kan du se mange eksempler på brugen af ​​flaget -v. Når du prøver at tilpasse disse kommandoer til dig selv, skal du huske på, at flagene --mount и --volume bruge forskellige parameterformater. Det vil sige, at du ikke bare kan erstatte -v--mount og få et arbejdshold.

Den væsentligste forskel mellem --mount и --volume er det, når man bruger flaget --volume alle parametre er samlet i ét felt, og ved brug --mount parametre er adskilt.

Når man arbejder med --mount parametre er repræsenteret som nøgle-værdi-par, det ser nemlig ud som key=value. Disse par er adskilt af kommaer. Her er de almindeligt anvendte muligheder --mount:

  • type - monteringstype. Værdien for den tilsvarende nøgle kan være binde, bind eller tmpfs. Vi taler om mængder her, det vil sige, at vi er interesserede i værdien volume.
  • source - monteringskilde. For navngivne bind er dette navnet på bindet. For unavngivne volumener er denne tast ikke specificeret. Det kan forkortes til src.
  • destination - stien, hvortil filen eller mappen er monteret i containeren. Denne nøgle kan forkortes til dst eller target.
  • readonly - monterer den tilsigtede volumen kun til læsning. Brugen af ​​denne nøgle er valgfri, og den er ikke tildelt nogen værdi.

Her er et eksempel på brug --mount med mange muligheder:

docker run --mount type=volume,source=volume_name,destination=/path/in/container,readonly my_image

Resultaterne af

Her er nogle nyttige kommandoer, du kan bruge, når du arbejder med Docker-volumener:

  • docker volume create
  • docker volume ls
  • docker volume inspect
  • docker volume rm
  • docker volume prune

Her er en liste over almindeligt anvendte muligheder for --mount, gældende i en kommando af formen docker run --mount my_options my_image:

  • type=volume
  • source=volume_name
  • destination=/path/in/container
  • readonly

Nu hvor vi har afsluttet denne Docker-serie, er det tid til at sige et par ord om, hvor eleverne i Docker kan gå videre. her god god artikel om Docker. her en bog om Docker (når du køber denne bog, så prøv at få den seneste udgave af den). her endnu en bog for dem, der mener, at praksis er den bedste måde at lære teknologi på.

Kære læsere! Hvilke Docker-materialer vil du anbefale for begyndere at lære?

Learning Docker, del 6: Arbejde med data

Kilde: www.habr.com

Tilføj en kommentar