Learning Docker, Deel 6: Werk met data

In vandag se deel van die vertaling van 'n reeks materiaal oor Docker, sal ons praat oor die werk met data. In die besonder oor Docker-volumes. In hierdie materiaal het ons voortdurend Docker-programmeringsmeganismes vergelyk met verskeie eetbare analogieë. Ons sal nie hier van hierdie tradisie afwyk nie. Laat data in Docker speserye wees. Daar is baie speserye in die wêreld, en Docker het baie maniere om met data te werk.

Deel 1: Die basiese beginsels
Deel 2: terme en konsepte
Deel 3: Dockerfiles
Deel 4: Verminder die grootte van beelde en bespoedig die samestelling daarvan
Deel 5: opdragte
Deel 6: werk met data

Learning Docker, Deel 6: Werk met data

Neem asseblief kennis dat hierdie materiaal voorberei is met behulp van die Docker-enjinweergawe 18.09.1 ​​en API-weergawe 1.39.

Data in Docker kan tydelik of permanent gestoor word. Kom ons begin met tydelike data.

Tydelike databerging

Daar is twee maniere om tydelike data in Docker-houers te bestuur.

By verstek word lêers wat geskep is deur 'n toepassing wat in 'n houer loop, in 'n skryfbare houerlaag gestoor. Om hierdie meganisme te laat werk, hoef niks spesiaals gekonfigureer te word nie. Dit blyk goedkoop en vrolik. Die toepassing moet eenvoudig die data stoor en voortgaan om sy eie ding te doen. Nadat die houer egter ophou bestaan, sal die data wat op so 'n eenvoudige manier gestoor is, ook verdwyn.

Tydelike lêerberging in Docker is nog 'n oplossing wat geskik is vir gevalle waar 'n hoër vlak van werkverrigting vereis word in vergelyking met wat haalbaar is met die standaard tydelike databergingmeganisme. As jy nie nodig het dat jou data langer gestoor word as wat die houer bestaan ​​nie, kan jy aan die houer tmpfs koppel – ’n tydelike inligtingstoor wat die gasheer se RAM gebruik. Dit sal die uitvoering van dataskryf- en leesbewerkings bespoedig.

Dit gebeur dikwels dat die data gestoor moet word selfs nadat die houer ophou bestaan. Om dit te doen, benodig ons aanhoudende databergingsmeganismes.

Aanhoudende databerging

Daar is twee maniere om die dataleeftyd langer as die houerleeftyd te maak. Een manier is om bind mount tegnologie te gebruik. Met hierdie benadering kan jy byvoorbeeld 'n werklike vouer op die houer monteer. Prosesse buite Docker sal ook kan werk met data wat in so 'n vouer gestoor is. Dis hoe kyk tmpfs mount en bind mount tegnologie.

Learning Docker, Deel 6: Werk met data
Monteer tmpfs en bind mount

Die nadele van die gebruik van die bind mount tegnologie is dat die gebruik daarvan data rugsteun, data migrasie, data deel tussen verskeie houers bemoeilik. Dit is baie beter om Docker-volumes te gebruik vir volgehoue ​​databerging.

Volumes Docker

'n Volume is 'n lêerstelsel wat op die gasheermasjien buite houers geleë is. Volumes word deur Docker geskep en bestuur. Hier is die belangrikste eienskappe van Docker-volumes:

  • Hulle is 'n manier van permanente stoor van inligting.
  • Hulle is onafhanklik en geskei van houers.
  • Hulle kan tussen verskillende houers gedeel word.
  • Hulle laat jou toe om doeltreffende lees en skryf van data te organiseer.
  • Volumes kan op die hulpbronne van 'n afgeleë wolkverskaffer geplaas word.
  • Hulle kan geïnkripteer word.
  • Hulle kan name gegee word.
  • Die houer kan reël vir voorafbevolking van die volume met data.
  • Hulle is gerieflik om te toets.

Soos u kan sien, het Docker-volumes ongelooflike eienskappe. Kom ons praat oor hoe om hulle te skep.

Die skep van volumes

Volumes kan geskep word met behulp van Docker- of API-versoeke.

Hier is 'n instruksie in die Dockerfile waarmee u 'n volume kan skep wanneer u 'n houer begin.

VOLUME /my_volume

Wanneer 'n soortgelyke instruksie gebruik word, sal Docker, nadat die houer geskep is, 'n volume skep wat die data bevat wat reeds op die gespesifiseerde plek bestaan. Let daarop dat as jy 'n volume skep met 'n Dockerfile, dit jou nie onthef van die behoefte om die volume se bergpunt te spesifiseer nie.

U kan ook volumes in 'n Dockerfile skep met die JSON-formaat.

Boonop kan volumes geskep word met behulp van opdragreëlnutsgoed terwyl die houer loop.

Werk met volumes vanaf die opdragreël

▍ Volumeskepping

U kan 'n selfstandige volume skep met die volgende opdrag:

docker volume create —-name my_volume

▍Vind inligting oor volumes uit

Om 'n lys van Docker-volumes te sien, gebruik die volgende opdrag:

docker volume ls

Jy kan 'n spesifieke volume soos volg verken:

docker volume inspect my_volume

▍Vee 'n volume uit

Jy kan 'n volume soos volg uitvee:

docker volume rm my_volume

Om alle volumes te verwyder wat nie deur houers gebruik word nie, kan u die volgende opdrag gebruik:

docker volume prune

Voordat u volumes uitvee, sal Docker u vra om hierdie bewerking te bevestig.

As 'n volume met 'n houer geassosieer word, kan daardie volume nie uitgevee word voordat die ooreenstemmende houer uitgevee is nie. Terselfdertyd, selfs al word die houer verwyder, verstaan ​​Docker dit nie altyd nie. As dit gebeur, kan jy die volgende opdrag gebruik:

docker system prune

Dit is ontwerp om Docker-hulpbronne skoon te maak. Nadat u hierdie opdrag uitgevoer het, behoort u volumes waarvan die status voorheen verkeerd was, te kan uitvee.

Die --mount en --volume vlae

Om met volumes te werk, wanneer jy die opdrag roep docker, sal jy dikwels vlae moet gebruik. Byvoorbeeld, om 'n volume te skep tydens houerskepping, kan jy hierdie konstruksie gebruik:

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

In antieke tye (tot 2017) was die vlag gewild --volume. Aanvanklik is hierdie vlag (dit kan ook in 'n verkorte vorm gebruik word, dan lyk dit so -v) is gebruik vir selfstandige houers, en die vlag --mount - in 'n Docker Swarm-omgewing. Vanaf Docker 17.06 is die vlag egter --mount kan in enige scenario gebruik word.

Daar moet kennis geneem word dat wanneer die vlag gebruik word --mount die hoeveelheid bykomende data wat in die opdrag gespesifiseer moet word, neem toe, maar om verskeie redes is dit beter om hierdie spesifieke vlag te gebruik, en nie --volume. Vlag --mount is die enigste meganisme wat jou toelaat om met dienste te werk of volume bestuurder opsies te spesifiseer. Hierdie vlag is ook makliker om mee te werk.

In die bestaande voorbeelde van Docker-datamanipulasie-opdragte, kan u baie voorbeelde van die gebruik van die vlag sien -v. Wanneer jy probeer om hierdie opdragte vir jouself aan te pas, hou in gedagte dat die vlae --mount и --volume gebruik verskillende parameterformate. Dit wil sê, jy kan nie net vervang nie -v op --mount en kry 'n werkende span.

Die belangrikste verskil tussen --mount и --volume is dit wanneer die vlag gebruik word --volume alle parameters word saam in een veld versamel, en wanneer dit gebruik word --mount parameters word geskei.

By die werk met --mount parameters word voorgestel as sleutel-waarde pare, naamlik, dit lyk soos key=value. Hierdie pare word deur kommas geskei. Hier is die algemeen gebruikte opsies --mount:

  • type - tipe berging. Die waarde vir die ooreenstemmende sleutel kan wees bind, volume of tmpfs. Ons praat hier van volumes, dit wil sê ons stel belang in die waarde volume.
  • source - berg bron. Vir benoemde bundels is dit die naam van die bundel. Vir naamlose volumes word hierdie sleutel nie gespesifiseer nie. Dit kan verkort word tot src.
  • destination - die pad waarop die lêer of vouer in die houer gemonteer is. Hierdie sleutel kan verkort word tot dst of target.
  • readonly - monteer die volume wat bedoel is net vir lees. Die gebruik van hierdie sleutel is opsioneel, en geen waarde word daaraan toegeken nie.

Hier is 'n voorbeeld van gebruik --mount met baie opsies:

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

Resultate van

Hier is 'n paar nuttige opdragte wat u kan gebruik wanneer u met Docker-volumes werk:

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

Hier is 'n lys van algemeen gebruikte opsies vir --mount, van toepassing in 'n bevel van die vorm docker run --mount my_options my_image:

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

Noudat ons hierdie Docker-reeks voltooi het, is dit tyd om 'n paar woorde te sê oor waarheen Docker-leerders volgende kan gaan. Hier goeie goeie artikel oor Docker. Hier 'n boek oor Docker (wanneer jy hierdie boek koop, probeer om die mees onlangse uitgawe daarvan te kry). Hier nog 'n boek vir diegene wat dink oefening is die beste manier om tegnologie te leer.

Beste lesers! Watter Docker-materiaal sal jy aanbeveel vir beginners om te leer?

Learning Docker, Deel 6: Werk met data

Bron: will.com

Voeg 'n opmerking