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.
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.
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?