LĂŠr Docker, del 6: arbejde med data

I dagens del af oversÊttelsen af serien om Docker vil vi tale om arbejde med data. IsÊr om Docker-volumener. I disse materialer har vi lÞbende sammenlignet Docker's softwaremekanismer med forskellige spiselige analogier. Lad os ikke afvige fra denne tradition her. Data i Docker kan betragtes som krydderier. Der findes mange typer krydderier i verden, og i Docker er der mange mÄder at arbejde med data pÄ.

→ Del 1: grundléggende
→ Del 2: termer og koncepter
→ Del 3: Dockerfile-filer
→ Del 4: reduktion af billedstþrrelser og hastighed af opbygning
→ Del 5: kommandoer
→ Del 6: arbejde med data

LĂŠr Docker, del 6: arbejde med data

BemĂŠrk, at dette materiale er forberedt ved hjĂŠlp af Docker-motorversion 18.09.1 og API-version 1.39.

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

Midlertidig opbevaring af data

I Docker-containere kan arbejdet med midlertidige data organiseres pÄ to mÄder.

Som standard gemmes filer, der oprettes af applikationen i containeren, i lag-containeren, der understÞtter skrivning. For at denne mekanisme fungerer, behÞver man ikke at konfigurere noget specielt. Det fleste er billigt og ukompliceret. Applikationen skal blot gemme data og fortsÊtte med sine opgaver. Men nÄr containeren ophÞrer med at eksistere, vil de data, som er gemt pÄ denne enkle mÄde, ogsÄ forsvinde.

For lagring af midlertidige filer i Docker kan man ogsĂ„ bruge en anden lĂžsning, der er velegnet til de tilfĂŠlde, hvor der krĂŠves et hĂžjere prĂŠstationsniveau sammenlignet med det, der kan opnĂ„s med den standard metode til midlertidig datalagring. Hvis du ikke har brug for, at dine data opbevares lĂŠngere end containerens eksistens, kan du tilslutte tmpfs til containeren — et midlertidigt datalager, der bruger vĂŠrtens RAM. Dette vil fremskynde skrive- og lĂŠseoperationer.

Det er ofte sÄdan, at data skal gemmes, selv efter at containeren er ophÞrt med at eksistere. Til dette formÄl vil vi fÄ brug for mekanismer til permanent datalagring.

Permanent datalagring

Der er to mÄder at forlÊnge dataenes levetid lÊngere end containerens levetid. En metode involverer brugen af bind mount-teknologi. Med denne tilgang kan man montere en faktisk eksisterende mappe til containeren. Processer uden for Docker vil kunne arbejde med data, der opbevares i en sÄdan mappe. SÄdan ser det ud montering af tmpfs og bind mount-teknologi.

LĂŠr Docker, del 6: arbejde med data
Montering af tmpfs og bind mount

Ulemperne ved at bruge bind mount-teknologi indebĂŠrer, at dens anvendelse komplicerer sikkerhedskopiering af data, dataflytning, og deling af data mellem flere containere. Det er meget bedre at bruge Docker-volumener til permanent datalagring.

Docker-volumener

Et volumen er et filsystem, der ligger pÄ vÊrtsmaskinen uden for containerne. Docker stÄr for oprettelse og administration af volumener. Her er de vigtigste egenskaber ved Docker-volumener:

  • De fungerer som vĂŠrktĂžjer til permanent lagring af information.
  • De er autonome og adskilt fra containerne.
  • De kan deles af forskellige containere.
  • De muliggĂžr effektiv lĂŠsning og skrivning af data.
  • Volumener kan placeres pĂ„ ressourcer fra en ekstern cloud-udbyder.
  • De kan krypteres.
  • De kan navngives.
  • En container kan forberede et volumen med data pĂ„ forhĂ„nd.
  • De er praktiske til testning.

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

Oprettelse af volumener

Volumener kan oprettes ved hjĂŠlp af Docker-vĂŠrktĂžjer eller ved API-anmodninger.

Her er en instruktion i Dockerfile, der tillader oprettelse af et volumen, nÄr containeren startes.

VOLUME /my_volume

NÄr du bruger en sÄdan instruktion i Docker, vil den efter oprettelsen af containeren generere et volumen, der indeholder de data, der allerede er til stede pÄ det angivne sted. VÊr opmÊrksom pÄ, at hvis du opretter et volumen ved hjÊlp af Dockerfile, frigÞr det ikke dig fra at angive monteringspunktet for volumenet.

Du kan ogsÄ oprette volumener i Dockerfile ved at bruge JSON-format.

Derudover kan volumener oprettes fra kommandolinjen under containerens kĂžrsel.

Arbejder med volumener fra kommandolinjen

▍Oprettelse af et volumen

Du kan oprette et selvstĂŠndigt volumen med fĂžlgende kommando:

docker volume create --name my_volume

▍Find oplysninger om volumener

For at se listen over Docker-volumener, brug fĂžlgende kommando:

docker volume ls

Du kan undersÞge et specifikt volumene sÄdan:

docker volume inspect my_volume

▍Sletning af volumener

Du kan slette et volumen sÄdan:

docker volume rm my_volume

For at slette alle volumener, som ikke bruges af containere, kan du bruge fĂžlgende kommando:

docker volume prune

FĂžr du sletter volumener, vil Docker anmode om din bekrĂŠftelse til at udfĂžre denne handling.

Hvis et volumen er knyttet til en container, kan det volumen ikke slettes, fÞr den tilhÞrende container er slettet. Og selvom containeren er slettet, forstÄr Docker ikke altid dette. Hvis dette sker - kan du anvende fÞlgende kommando:

docker system prune

Den er beregnet til at rydde op i Docker-ressourcer. Efter at have kĂžrt denne kommando, skulle du kunne slette volumener, hvis status tidligere var blevet identificeret forkert.

Flagene —mount og —volume

NÄr du arbejder med volumener, skal du ofte bruge flagene, nÄr du kalder kommandoen docker, for eksempel for at oprette et volumen under oprettelsen af en container, kan du bruge denne konstruktion:

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

I gamle dage (fĂžr 2017) var flaget --volume. Oprindeligt blev dette flag (det kan ogsĂ„ bruges i forkortet form, sĂ„ det ser ud som -v) anvendt til selvstĂŠndige containere, mens flaget --mount — blev brugt i Docker Swarm-miljĂžet. Men fra Docker 17.06 kan flaget --mount bruges i alle scenarier.

Der skal bemĂŠrkes, at nĂ„r du bruger flaget, Ăžges mĂŠngden af ekstra data, der skal angives i kommandoen, men af flere grunde er det bedre at bruge netop dette flag og ikke --mount . Flaget --volume— er den eneste mekanisme, der gĂžr det muligt at arbejde med tjenester eller angive oplysninger om volumenets driver. Desuden er det nemmere at arbejde med dette flag. --mount I de eksisterende kommandoeksempler rettet mod databehandling i Docker, kan du finde mange eksempler pĂ„ brug af flaget

. NÄr du forsÞger at tilpasse disse kommandoer til dig selv, skal du huske, at flagene -vbruger forskellige formater for parametre. Det vil sige, at du ikke blot kan erstatte --mount og --volume med -v og fÄ en fungerende kommando. --mount Den vigtigste forskel mellem

er, at nÄr du bruger flaget --mount og --volume er der variationer i de tilladte parametre. --volume alle parametre samles i et felt, og ved brug --mount adskilles parametre.

NÄr man arbejder med --mount er parametre prÊsenteret som nÞgle-vÊrdi par, som ser sÄdan ud nÞgle=vÊrdi. Disse par adskilles med kommaer. Her er ofte brugte parametre --mount:

  • type — monterings type. VĂŠrdien for den tilsvarende nĂžgle kan vĂŠre bind, volume eller tmpfs. Vi taler her om volumener, det vil sige — vi er interesserede i vĂŠrdien volume.
  • source — monteringskilden. For navngivne volumener er det — navnet pĂ„ volumet. For ikke-navngivne volumener angives denne nĂžgle ikke. Den kan forkortes til src.
  • destination — stien, hvor filen eller mappen monteres i containeren. Denne nĂžgle kan forkortes til dst eller target.
  • readonly — monterer et volumen, der er beregnet kun til lĂŠsning. Det er ikke obligatorisk at bruge denne nĂžgle, og der tildeles ikke vĂŠrdi til den.

Her er et eksempel pÄ brug --mount med mange parametre:

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

Resumé

Her er nogle nyttige kommandoer, som man kan bruge, nÄr man arbejder med Docker-volumener:

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

Her er listen over ofte brugte parametre til --mount, anvendelige i kommandoen af typen docker run --mount my_options my_image:

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

Nu hvor vi har afsluttet denne serie af materialer om Docker, er det tid til at sige et par ord om, hvor man kan gÄ videre for dem, der studerer Docker. Her er en stor god artikel om Docker. Her er en bog om Docker (nÄr du kÞber denne bog, sÄ prÞv at fÄ den nyeste udgave). Her er endnu en bog, som vil vÊre passende for dem, der mener, at praksis er den bedste mÄde at lÊre teknologier pÄ.

KĂŠre lĂŠsere! Hvilke materialer om Docker ville du anbefale nybegyndere at studere?

LĂŠr Docker, del 6: arbejde med data

Kilde: habr.com

KĂžb pĂ„lidelig webhosting med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KĂžb pĂ„lidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster