Në pjesën e sotme të përkthimit të serisë së materialeve mbi Docker, do të flasim për punën me të dhënat. Në veçanti, për volumet Docker. Në këto materiale, ne vazhdimisht kemi krahasuar mekanizmat e programit Docker me krahasime të ndryshme kulinarike. Nuk do të shkëputemi nga kjo traditë as tani. Të dhënat në Docker le të jenë erëza. Në botë ka shumë lloje erëzash, po ashtu në Docker ka shumë mënyra për të punuar me të dhëna.
â
â
â
â
â
â
Mbani parasysh se ky material është përgatitur duke përdorur motorin Docker version 18.09.1 dhe API version .
Të dhënat në Docker mund të ruhen ose përkohësisht, ose përhershëm. Le të fillojmë me të dhënat përkohësisht.
Ruajtja përkohësisht e të dhënave
Në përmbajtjen e kontejnerëve Docker, organizimi i punës me të dhënat përkohësisht mund të bëhet në dy mënyra.
Sipas parazgjedhjes, skedarët e krijuar nga aplikacioni që punon në kontejner ruhen në layerin e kontejnerit që mbështet shkrimin. Për të funksionuar ky mekanizëm, nuk është e nevojshme të konfiguroni ndonjë gjë në veçanti. Kështu është e lirë dhe e lehtë. Aplikacionit mjafton të ruajë të dhënat dhe të vazhdojë me punët e veta. Megjithatë, pasi kontejneri të mos ekzistojë më, do të zhduken edhe të dhënat e ruajtura në këtë mënyrë të thjeshtë.
Për ruajtjen e skedarëve përkohësisht në Docker, mund të përdorim një zgjidhje tjetër, e cila është e përshtatshme për ato raste kur kërkohet një nivel më i lartë performancës, krahasuar me atë që arrihet duke përdorur mekanizmin standard të ruajtjes përkohësisht të të dhënave. Nëse nuk keni nevojë që të dhënat tuaja të ruhen më gjatë se sa ekziston kontejneri, mund të lidhni me kontejnerin tmpfs - një ruajtje përkohësisht informacionesh, e cila përdor RAM-in e hostit. Kjo do të lejojë përshpejtimin e operacioneve të shkrimit dhe leximit të të dhënave.
Shpesh ndodh që të dhënat duhet të ruhen dhe pas ikjes së kontejnerit. Për këtë, do na duhen mekanizmat e ruajtjes përhershmërisht të të dhënave.
Ruajtje e përhershme e të dhënave
Ekzistojnë dy mënyra për të zgjasin jetën e të dhënave më gjatë se koha e jetës së kontejnerit. Njëra nga këto është përdorimi i teknologjisë 'bind mount'. Me këtë qasje, në një kontejner mund të montoni, për shembull, një dosje që ekziston në të vërtetë. Proceset që ndodhen jashtë Docker mund të punojnë me të dhënat që ruhen në atë dosje. Ja se si montimi tmpfs dhe teknologjia 'bind mount'.

Montimi tmpfs dhe 'bind mount'
Disavantazhet e pĂ«rdorimit tĂ« teknologjisĂ« 'bind mount' janĂ« se pĂ«rdorimi i saj e komplikon kopjimin e tĂ« dhĂ«nave, migron e tĂ« dhĂ«nave, ndarjen e tĂ« dhĂ«nave ndĂ«rmjet disa kontejnerĂ«ve. ĂshtĂ« shumĂ« mĂ« mirĂ« tĂ« pĂ«rdorni vĂ«llime Docker pĂ«r ruajtje tĂ« pĂ«rhershme tĂ« tĂ« dhĂ«nave.
Vëllimet Docker
Një vëllim është një sistem skedash që ndodhet në makinë pritëse jashtë kontejnerëve. Docker merret me krijimin dhe menaxhimin e vëllimeve. Këtu janë pronësitë kryesore të vëllimeve Docker:
- Ato përfaqësojnë mjete për ruajtjen e përhershme të informacionit.
- Ato janë të pavarura dhe të ndara nga kontejnerët.
- Ato mund të përdoren në përbashkëti nga kontejnerë të ndryshëm.
- Ato lejojnë organizimin efikas të leximit dhe shkruarjes së të dhënave.
- Vëllimet mund të vendosen në burimet e ofruesve të cloud-it të largët.
- Ato mund të enkryptohet.
- Ato mund të kenë emra.
- Një kontejner mund të organizojë përmbushjen e parakohshme të vëllimit me të dhëna.
- Ato janë të përshtatshme për testim.
Siç e shihni, vëllimet Docker kanë pronësi të shkëlqyera. Le të flasim se si t'i krijojmë ato.
Krijimi i vëllimeve
Vëllimet mund të krijohen përmes Docker ose me kërkesa në API.
Këtu është një udhëzim në Dockerfile që lejon krijimin e një vëllimi gjatë startimit të kontejnerit.
VOLUME /my_volumeDuke përdorur një udhëzim të tillë Docker, pas krijimit të kontejnerit, do të krijohet një vëllim që përmban të dhënat që tashmë ekzistojnë në vendin e caktuar. Ju lutem vini re se nëse krijoni një vëllim me përdorimin e Dockerfile, kjo nuk ju lirojnë nga nevoja për të specifikuar pikën e montimit të vëllimit.
Vëllimet në Dockerfile mund të krijohen gjithashtu duke përdorur formatin JSON.
Për më tepër, vëllimet mund të krijohen përmes komandës në linjën e komandës gjatë punës së kontejnerit.
Puna me vëllimet nga linja e komandës
âKrijimi i njĂ« vĂ«llimi
Një vëllim të pavarur mund ta krijoni me komandën në vijim:
docker volume create â-name my_volumeâTĂ« mĂ«sosh informacion mbi vĂ«llimet
Për të parë listën e volumave Docker, përdorni komandën e mëposhtme:
docker volume lsPër të hetuar një volum specifik, mund ta bëni kështu:
docker volume inspect my_volumeâFshirja e volumit
Një volum mund të fshihet ashtu:
docker volume rm my_volumePër të fshirë të gjitha volumet që nuk përdoren nga kontejnerët, mund të përdorni këtë komandë:
docker volume prunePara fshirjes së volumve, Docker do të kërkojë konfirmimin tuaj për të kryer këtë operacion.
Nëse volumi është i lidhur me ndonjë kontejner, ai volum nuk mund të fshihet derisa të fshihet kontejneri përkatës. Po ashtu, edhe nëse kontejneri është fshirë, Docker nuk e kupton gjithmonë këtë. Nëse ndodh kjo, mund të përdorni komandën e mëposhtme:
docker system pruneAjo është e destinuar për pastrimin e burimeve Docker. Pas ekzekutimit të kësaj komande, duhet të keni mundësi për të fshirë volumet, statusi i të cilave ishte përcaktuar gabimisht më parë.
Flagjet âmount dhe âvolume
Për të punuar me volumet, gjatë thirrjes së komandës docker, shpesh do t'ju duhet të përdorni flagjet. Për shembull, për të krijuar një volum gjatë krijimit të kontejnerit mund të përdorni këtë sintaksë:
docker container run --mount source=my_volume, target=\/container\/path\/for\/volume my_image Në ditët e vjetra (para vitit 2017) ishte popullor flagu --volume. Fillimisht ky flag (mund të përdoret gjithashtu në formë të shkurtuar, atëherë duket si -v) u përdor për kontejnerë të vetë-pavarur, ndërsa flagu --mount u përdor në ambientin Docker Swarm. Megjithatë, duke filluar nga Docker 17.06, flagu --mount mund të përdoret në çdo skenar.
Duhet të theksohet se, gjatë përdorimit të flagut --mount , rritet sasia e të dhënave shtesë që duhen specifikuar në komandë, por për disa arsye, është më mirë të përdoret ky flag, sesa --volume. Flag --mount -- është mekanizmi i vetëm që lejon punën me shërbime ose specifikimin e parametrave të drejtuesit të volumit. Për më tepër, është më e lehtë të punosh me këtë flag.
Në shembujt ekzistues të komandave të orientuara ndaj punës me të dhëna në Docker, mund të takoni shumë shembuj të përdorimit të flagut -v. Duke u përpjekur të adaptoni këto komanda për vete, merrni parasysh se flagjet --mount dhe --volume përdorin formate të ndryshme parametrash. Pra, nuk mund të zëvendësoni thjesht -v në --mount dhe të merrni një komandë funksionale.
Dallimi kryesor midis --mount dhe --volume përfshin faktin se, gjatë përdorimit të flagut --volume të gjithë parametrat mblidhen së bashku, në një fushë, ndërsa gjatë përdorimit --mount parametrat ndahen.
Kur punoni me --mount parametrat janë të paraqitura si çifte çelës-vlerë, konkretisht, kjo duket si key=value. Këto çifte ndahen me presje. Ja disa parametra të përdorur shpesh --mount:
llojiâ lloji i montimit. Vlera pĂ«r çelĂ«sin pĂ«rkatĂ«s mund tĂ« jetĂ« , ose . KĂ«tu flasim pĂ«r volume, pra na intereson vleravolume.sourceâ burimi i montimit. PĂ«r volumet e emĂ«ruara, ky Ă«shtĂ« emri i volumit. PĂ«r volumet e paemĂ«ruara ky çelĂ«s nuk tregohet. Ai mund tĂ« shkurtosej nĂ«src.destinationâ rruga, ku skedari ose dosja montohet nĂ« kontejner. Ky çelĂ«s mund tĂ« shkurtosej nĂ«dstosetarget.readonlyâ montohet njĂ« volum, i cili Ă«shtĂ« i destinuar . PĂ«rdorimi i kĂ«tij çelĂ«si nuk Ă«shtĂ« i detyrueshĂ«m, vlera e tij nuk caktohet.
Ja një shembull i përdorimit --mount me shumë parametrat:
docker run --mount type=volume,source=volume_name,destination=\/path\/in\/container,readonly my_imagePërfundime
Ja komandat e dobishme, që mund të përdoren kur punoni me volume Docker:
docker volume createdocker volume lsdocker volume inspectdocker volume rmdocker volume prune
Ja lista e parametrave të përdorur shpesh për --mount, të aplikueshëm në komandën e formës docker run --mount my_options my_image:
type=volumesource=volume_namedestination=\/path\/in\/containerreadonly
Tani, që kemi përfunduar këtë serisë të materialeve mbi Docker, është koha për të thënë disa fjalë për atë, ku ata që studiojnë Docker mund të vazhdojnë më tej. një artikull i shkëlqyer mbi Docker. libri mbi Docker (kur bleni këtë libër, përpiquni të siguroni edicionin më të ri të tij). një libër tjetër, i cili do të përputhej me ata që mendojnë se praktika është mënyra më e mirë për të mësuar teknologjitë.
TĂ« nderuar lexues! ĂfarĂ« materialesh mbi Docker do tĂ« rekomandonit tĂ« studiojnĂ« fillestarĂ«t?
Burimi: habr.com
