Dociwr Dysgu, Rhan 6: Gweithio gyda Data

Yn y rhan heddiw o gyfieithu cyfres o ddeunyddiau am Docker, byddwn yn siarad am weithio gyda data. Yn benodol, am gyfrolau Docker. Yn y deunyddiau hyn, rydym yn gyson yn cymharu mecanweithiau rhaglennu Docker ag amrywiol gyfatebiaethau bwytadwy. Ni fyddwn yn gwyro oddi wrth y traddodiad hwn yma. Gadewch i ddata yn Docker fod yn sbeisys. Mae yna lawer o sbeisys yn y byd, ac mae gan Docker lawer o ffyrdd o weithio gyda data.

Rhan 1: Yr Hanfodion
Rhan 2: termau a chysyniadau
Rhan 3: Dockerfiles
Rhan 4: Lleihau maint delweddau a chyflymu eu cydosod
Rhan 5: gorchmynion
Rhan 6: gweithio gyda data

Dociwr Dysgu, Rhan 6: Gweithio gyda Data

Sylwch fod y deunydd hwn wedi'i baratoi gan ddefnyddio fersiwn injan Docker 18.09.1 ​​a fersiwn API 1.39.

Gellir storio data yn Docker naill ai dros dro neu'n barhaol. Gadewch i ni ddechrau gyda data dros dro.

Storio data dros dro

Mae dwy ffordd i reoli data dros dro mewn cynwysyddion Docker.

Yn ddiofyn, mae ffeiliau a grëwyd gan raglen sy'n rhedeg mewn cynhwysydd yn cael eu storio mewn haen cynhwysydd y gellir ei ysgrifennu. Er mwyn i'r mecanwaith hwn weithio, nid oes angen ffurfweddu unrhyw beth arbennig. Mae'n troi allan yn rhad ac yn siriol. Yn syml, mae angen i'r rhaglen arbed y data a pharhau i wneud ei beth ei hun. Fodd bynnag, ar ôl i'r cynhwysydd ddod i ben, bydd y data a arbedwyd mewn ffordd mor syml hefyd yn diflannu.

Mae storio ffeiliau dros dro yn Docker yn ddatrysiad arall sy'n addas ar gyfer achosion lle mae angen lefel uwch o berfformiad arnoch na'r hyn sy'n gyraeddadwy gan ddefnyddio'r mecanwaith storio data dros dro safonol. Os nad oes angen i'ch data gael ei storio'n hirach nag y mae'r cynhwysydd yn bodoli, gallwch gysylltu â'r tmpfs cynhwysydd - storfa wybodaeth dros dro sy'n defnyddio RAM y gwesteiwr. Bydd hyn yn cyflymu'r broses o gyflawni gweithrediadau ysgrifennu data a darllen.

Mae'n aml yn digwydd bod angen storio'r data hyd yn oed ar ôl i'r cynhwysydd ddod i ben. I wneud hyn, mae angen mecanweithiau storio data parhaus arnom.

Storio data yn barhaus

Mae dwy ffordd i wneud oes y data yn hirach nag oes y cynhwysydd. Un ffordd yw defnyddio technoleg mowntio rhwymo. Gyda'r dull hwn, gallwch chi osod, er enghraifft, ffolder bywyd go iawn i'r cynhwysydd. Bydd prosesau y tu allan i Docker hefyd yn gallu gweithio gyda data sydd wedi'i storio mewn ffolder o'r fath. Dyna sut edrych tmpfs mowntio a rhwymo mowntio technoleg.

Dociwr Dysgu, Rhan 6: Gweithio gyda Data
Mowntio tmpfs a mownt rhwymo

Anfanteision defnyddio'r dechnoleg mowntio rhwymo yw bod ei ddefnydd yn cymhlethu data wrth gefn, mudo data, rhannu data ymhlith sawl cynhwysydd. Mae'n llawer gwell defnyddio cyfrolau Docker ar gyfer storio data parhaus.

Dociwr Cyfrolau

Mae cyfaint yn system ffeiliau sydd wedi'i lleoli ar y peiriant gwesteiwr y tu allan i gynwysyddion. Mae cyfrolau yn cael eu creu a'u rheoli gan Docker. Dyma brif briodweddau cyfrolau Docker:

  • Maent yn fodd i storio gwybodaeth yn barhaol.
  • Maent yn annibynnol ac wedi'u gwahanu oddi wrth gynwysyddion.
  • Gellir eu rhannu rhwng gwahanol gynwysyddion.
  • Maent yn caniatáu ichi drefnu darllen ac ysgrifennu data yn effeithlon.
  • Gellir gosod cyfrolau ar adnoddau darparwr cwmwl anghysbell.
  • Gellir eu hamgryptio.
  • Gellir rhoi enwau iddynt.
  • Gall y cynhwysydd drefnu ar gyfer rhag-boblogi'r cyfaint â data.
  • Maent yn gyfleus ar gyfer profi.

Fel y gwelwch, mae gan gyfrolau Docker briodweddau anhygoel. Gadewch i ni siarad am sut i'w creu.

Creu Cyfrolau

Gellir creu cyfrolau gan ddefnyddio ceisiadau Docker neu API.

Dyma gyfarwyddyd yn y Dockerfile sy'n eich galluogi i greu cyfaint wrth gychwyn cynhwysydd.

VOLUME /my_volume

Wrth ddefnyddio cyfarwyddyd tebyg, bydd Docker, ar ôl creu'r cynhwysydd, yn creu cyfaint sy'n cynnwys y data sydd eisoes yn bodoli yn y lleoliad penodedig. Sylwch, os ydych chi'n creu cyfrol gan ddefnyddio Dockerfile, nid yw hyn yn eich rhyddhau o'r angen i nodi pwynt gosod y gyfrol.

Gallwch hefyd greu cyfrolau mewn Dockerfile gan ddefnyddio'r fformat JSON.

Yn ogystal, gellir creu cyfeintiau gan ddefnyddio offer llinell orchymyn tra bod y cynhwysydd yn rhedeg.

Gweithio gyda chyfeintiau o'r llinell orchymyn

▍ Creu cyfrol

Gallwch greu cyfrol annibynnol gyda'r gorchymyn canlynol:

docker volume create —-name my_volume

▍ Darganfod gwybodaeth am gyfeintiau

I weld rhestr o gyfrolau Docker, defnyddiwch y gorchymyn canlynol:

docker volume ls

Gallwch archwilio cyfrol benodol fel hyn:

docker volume inspect my_volume

▍ Dileu cyfrol

Gallwch ddileu cyfrol fel hyn:

docker volume rm my_volume

Er mwyn cael gwared ar yr holl gyfrolau nad ydynt yn cael eu defnyddio gan gynwysyddion, gallwch droi at y gorchymyn canlynol:

docker volume prune

Cyn dileu cyfrolau, bydd Docker yn gofyn ichi gadarnhau'r llawdriniaeth hon.

Os yw cyfaint yn gysylltiedig â chynhwysydd, ni ellir dileu'r gyfrol honno nes bod y cynhwysydd cyfatebol yn cael ei ddileu. Ar yr un pryd, hyd yn oed os caiff y cynhwysydd ei dynnu, nid yw Docker bob amser yn deall hyn. Os bydd hyn yn digwydd, gallwch ddefnyddio'r gorchymyn canlynol:

docker system prune

Fe'i cynlluniwyd i lanhau adnoddau Docker. Ar ôl gweithredu'r gorchymyn hwn, dylech allu dileu cyfrolau yr oedd eu statws yn anghywir yn flaenorol.

Y baneri --mount a --gyfrol

I weithio gyda chyfeintiau, pan fyddwch chi'n ffonio'r gorchymyn docker, yn aml bydd angen i chi ddefnyddio baneri. Er enghraifft, i greu cyfaint wrth greu cynhwysydd, gallwch ddefnyddio'r lluniad hwn:

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

Yn yr hen amser (tan 2017), roedd y faner yn boblogaidd --volume. I ddechrau, mae hyn yn faner (gellir ei ddefnyddio hefyd ar ffurf dalfyredig, yna mae'n edrych fel -v) yn cael ei ddefnyddio ar gyfer cynwysyddion annibynnol, a'r faner --mount - mewn amgylchedd Docker Swarm. Fodd bynnag, o Docker 17.06, y faner --mount gellir ei ddefnyddio mewn unrhyw senario.

Dylid nodi wrth ddefnyddio'r faner --mount mae faint o ddata ychwanegol y mae'n rhaid ei nodi yn y gorchymyn yn cynyddu, ond, am sawl rheswm, mae'n well defnyddio'r faner benodol hon, ac nid --volume. Baner --mount yw'r unig fecanwaith sy'n eich galluogi i weithio gyda gwasanaethau neu nodi opsiynau gyrrwr cyfaint. Hefyd, mae'r faner hon yn haws gweithio gyda hi.

Yn yr enghreifftiau presennol o orchmynion trin data Docker, gallwch weld llawer o enghreifftiau o ddefnyddio'r faner -v. Wrth geisio addasu gorchmynion hyn i chi'ch hun, yn cadw mewn cof bod y fflagiau --mount и --volume defnyddio gwahanol fformatau paramedr. Hynny yw, ni allwch gymryd lle yn syml -v ar --mount a chael tîm gweithio.

Y prif wahaniaeth rhwng --mount и --volume yw hynny wrth ddefnyddio'r faner --volume cesglir yr holl baramedrau gyda'i gilydd mewn un maes, ac wrth ddefnyddio --mount paramedrau yn cael eu gwahanu.

Wrth weithio gyda --mount cynrychiolir paramedrau fel parau gwerth allweddol, sef, mae'n edrych fel key=value. Mae'r parau hyn yn cael eu gwahanu gan atalnodau. Dyma'r opsiynau a ddefnyddir yn gyffredin --mount:

  • type - math o mount. Gall gwerth yr allwedd gyfatebol fod rhwymo, cyfaint neu tmpfs. Yr ydym yn sôn am gyfrolau yma, hynny yw, mae gennym ddiddordeb yn y gwerth volume.
  • source - ffynhonnell mount. Ar gyfer cyfrolau a enwyd, dyma enw'r gyfrol. Ar gyfer cyfrolau dienw, nid yw'r allwedd hon wedi'i nodi. Gellir ei fyrhau i src.
  • destination - y llwybr y mae'r ffeil neu'r ffolder wedi'i osod yn y cynhwysydd iddo. Gellir byrhau'r allwedd hon i dst neu target.
  • readonly - yn mowntio'r gyfrol a fwriedir dim ond ar gyfer darllen. Mae'r defnydd o'r allwedd hon yn ddewisol, ac ni roddir unrhyw werth iddo.

Dyma enghraifft o ddefnydd --mount gyda llawer o opsiynau:

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

Canlyniadau

Dyma rai gorchmynion defnyddiol y gallwch eu defnyddio wrth weithio gyda chyfrolau Docker:

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

Dyma restr o opsiynau a ddefnyddir yn gyffredin ar gyfer --mount, yn gymwys mewn gorchymyn o'r ffurf docker run --mount my_options my_image:

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

Nawr ein bod ni wedi cwblhau'r gyfres Docker hon, mae'n bryd dweud ychydig eiriau am ble gall dysgwyr Docker fynd nesaf. Yma erthygl dda wych am Docker. Yma llyfr am Docker (wrth brynu'r llyfr hwn, ceisiwch gael y rhifyn diweddaraf ohono). Yma llyfr arall i'r rhai sy'n meddwl mai ymarfer yw'r ffordd orau o ddysgu technoleg.

Annwyl ddarllenwyr! Pa ddeunyddiau Docker fyddech chi'n eu hargymell i ddechreuwyr eu dysgu?

Dociwr Dysgu, Rhan 6: Gweithio gyda Data

Ffynhonnell: hab.com

Ychwanegu sylw