Eksplorojmë Docker, pjesa 6: punimi me të dhëna

NĂ« kĂ«tĂ« pjesĂ« tĂ« pĂ«rkthimit tĂ« seri 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 softuerit tĂ« Docker me krahasime tĂ« ndryshme ushqimore. Le tĂ« mos largohemi nga kjo traditĂ« as kĂ«tu. TĂ« dhĂ«nat nĂ« Docker le tĂ« jenĂ« erĂ«za. NĂ« botĂ« ekzistojnĂ« shumĂ« lloje erĂ«zash, dhe nĂ« Docker — shumĂ« mĂ«nyra pĂ«r tĂ« punuar me tĂ« dhĂ«nat.

→ Pjesa 1: tĂ« parat
→ Pjesa 2: terma dhe koncepte
→ Pjesa 3: skedarĂ«t Dockerfile
→ Pjesa 4: zvogĂ«limi i madhĂ«sive tĂ« imazheve dhe pĂ«rshpejtimi i ndĂ«rtimit tĂ« tyre
→ Pjesa 5: komandat
→ Pjesa 6: punĂ« me tĂ« dhĂ«na

Eksplorojmë Docker, pjesa 6: punimi me të dhëna

Kujdes, ky material është përgatitur duke përdorur motorin Docker versione 18.09.1 dhe API version 1.39.

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ësore.

Ruajtja e përkohshme të dhënash

Në kontejnerët Docker, organizimi i punës me të dhënat përkohësore mund të bëhet në dy mënyra.

Për default, skedarët që krijohen nga aplikacioni që punon në kontejner ruhen në një shtresë kontejneri që mbështet shkrimin. Për të funksionuar ky mekanizëm, nuk nevojitet konfigurim të veçantë. Kështu që del ekonomik dhe efektiv. Aplikacioni mjafton të ruajë të dhënat dhe të vazhdojë me punën e tij. Megjithatë, pas ndalimit të ekzistencës së kontejnerit, do të humbasin gjithashtu të dhënat e ruajtura me këtë metodë të thjeshtë.

PĂ«r ruajtjen e skedarĂ«ve pĂ«rkohĂ«sorĂ« nĂ« Docker, mund tĂ« pĂ«rdorni njĂ« zgjidhje tjetĂ«r, e cila Ă«shtĂ« e pĂ«rshtatshme pĂ«r rastet kur kĂ«rkohet njĂ« nivel mĂ« i lartĂ« performancĂ« nĂ« krahasim me atĂ« qĂ« arrihet me mekanizmin standard tĂ« ruajtjes pĂ«rkohĂ«sore. NĂ«se nuk ju nevojitet qĂ« tĂ« dhĂ«nat tuaja tĂ« ruhen mĂ« gjatĂ« se sa ekziston kontejneri, mund tĂ« lidhni njĂ« tmpfs me kontejnerin — njĂ« magazinĂ« pĂ«rkohĂ«sore qĂ« pĂ«rdor RAM-in e hostit. Kjo do tĂ« pĂ«rshpejtojĂ« operacionet e shkrimit dhe leximit tĂ« tĂ« dhĂ«nave.

Shpesh ndodh që të dhënat duhet të ruhen dhe pasi kontejneri të ketë ndaluar ekzistencën. Për këtë, do të na nevojiten mekanizmat e ruajtjes përhershme të të dhënave.

Ruajtja e përhershme e të dhënave

Ekzistojnë dy mënyra për të bërë që koha e jetës së të dhënave të jetë më e gjatë se koha e jetës së kontejnerit. Një nga mënyrat është përdorimi i teknologjisë bind mount. Me këtë qasje, mund të lidhni një folder realisht ekzistues me kontejnerin. Proceset jashtë Docker-it do të mund të punojnë me të dhënat që ruhen në këtë folder. Këtu është si duke dukur lidhet tmpfs dhe teknologjia bind mount.

Eksplorojmë Docker, pjesa 6: punimi me të dhëna
Lidhja tmpfs dhe bind mount

Disavantazhet e pĂ«rdorimit tĂ« teknologjisĂ« bind mount pĂ«rfshijnĂ« komplikimin e kopjimit tĂ« tĂ« dhĂ«nave, migrimin e tĂ« dhĂ«nave, dhe ndarjen e tĂ« dhĂ«nave midis kontejnerĂ«ve. ËshtĂ« shumĂ« mĂ« mirĂ« pĂ«r ruajtjen pĂ«rhershme tĂ« tĂ« dhĂ«nave tĂ« pĂ«rdoren volumet Docker.

Volumet Docker

Një volum është një sistem fisierësh i vendosur në makinën host përtej kontejnerëve. Docker është përgjegjës për krijimin dhe administrimin e volumet. Këtu janë veçoritë kryesore të volumeteve Docker:

  • Ato janĂ« mjete pĂ«r ruajtjen pĂ«rhershme tĂ« informacionit.
  • Ato janĂ« tĂ« pavarura dhe tĂ« ndara nga kontejnerĂ«t.
  • Ato mund tĂ« pĂ«rdoren nĂ« pĂ«rbashkĂ«si nga kontejnerĂ« tĂ« ndryshĂ«m.
  • Ato lejojnĂ« organizimin e leximit dhe shkrimit efektiv tĂ« tĂ« dhĂ«nave.
  • Volumet mund tĂ« vendosen nĂ« burimet e ofruesve tĂ« shĂ«rbimit nĂ« cloud.
  • Ato mund tĂ« enkriptohen.
  • Ato mund tĂ« emĂ«rtohen.
  • NjĂ« kontejner mund tĂ« organizojĂ« paraprakisht mbushjen e volumit me tĂ« dhĂ«na.
  • Ato janĂ« tĂ« pĂ«rshtatshme pĂ«r testim.

Siç e shihni, volumet Docker kanë veçori të shkëlqyera. Le të flasim për mënyrat e krijimit të tyre.

Krijimi i volumeteve

Volumet mund të krijohen përmes Docker ose duke përdorur thirrje në API.

Këtu është instruksioni në Dockerfile që lejon krijimin e një volumi gjatë fillimit të kontejnerit.

VOLUME /my_volume

Duke përdorur një instruksion të tillë Docker, pas krijimit të kontejnerit, do të krijohet një volum që përmban të dhënat që tashmë ekzistojnë në vendin e caktuar. Kini parasysh se nëse krijoni një volum duke përdorur Dockerfile, kjo nuk ju çliron nga nevoja për të treguar pikën e lidhjes së volumit.

Volumet mund të krijohen gjithashtu në Dockerfile duke përdorur formatin JSON.

Përveç kësaj, volumet mund të krijohen edhe përmes komandës nga linja e komandave gjatë funksionimit të kontejnerit.

Punë me volumet nga linja e komandave

▍Krijimi i njĂ« volumi

Një volum të pavarur mund të krijohet me komandën e mëposhtme:

docker volume create —-name my_volume

▍Zbulimi i informacionit mbi volumet

Për të parë listën e volumeteve Docker, përdorni komandën e mëposhtme:

docker volume ls

Për të hetuar një volum të veçantë, mund të bëni kështu:

docker volume inspect my_volume

▍ShkĂ«putja e njĂ« volumi

Një volum mund të fshihet kështu:

docker volume rm my_volume

Për të fshirë të gjitha volumet që nuk përdoren nga kontejnerët, mund të përdorni komandën:

docker volume prune

Para se të fshini volumet, Docker do t'ju kërkojë konfirmimin për të kryer këtë operacion.

Nëse një volum është i lidhur me ndonjë kontejner, ai volum nuk mund të fshihet derisa të fshihet kontejneri përkatës. Megjithatë, edhe nëse kontejneri është fshirë, Docker nuk e kupton gjithmonë këtë. Nëse ndodh kjo - mund të përdorni komandën në vijim:

docker system prune

Ajo është e destinuar për pastrimin e burimeve Docker. Pas ekzekutimit të kësaj komande, ju duhet të keni mundësinë për të fshirë volumet, statusi i të cilave më parë përcaktohej gabimisht.

Flagat —mount dhe —volume

Për të punuar me volumet, gjatë thirrjes së komandës docker, shpesh do t'ju duhet të përdorni flagat. Për shembull, për të krijuar një volum gjatë krijimit të kontejnerit, mund të përdorni këtë strukturë:

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

NĂ« ditĂ«t e kaluara (para vitit 2017) 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 e pavarur, ndĂ«rsa flagu --mount — nĂ« mjedisin Docker Swarm. MegjithatĂ«, duke filluar nga Docker 17.06, flagu --mount mund tĂ« pĂ«rdoret nĂ« çdo skenar.

Duhet theksuar se kur pĂ«rdorni flagun --mount rritet volumi i tĂ« dhĂ«nave shtesĂ« qĂ« duhet tĂ« tregoni nĂ« komandĂ«, por, pĂ«r disa arsye, Ă«shtĂ« mĂ« mirĂ« tĂ« pĂ«rdorni pikĂ«risht kĂ«tĂ« flag, sesa --volume. Flag --mount — Ă«shtĂ« mekanizmi i vetĂ«m qĂ« lejon tĂ« punoni me shĂ«rbime ose tĂ« pĂ«rcaktoni parametrat e driverit tĂ« volumin. PĂ«r mĂ« tepĂ«r, Ă«shtĂ« mĂ« e lehtĂ« tĂ« punoni me kĂ«tĂ« flag.

Në shembujt ekzistues të komandave të orientuara në punën me të dhënat në Docker, mund të hasni shumë shembuj të përdorimit të flagut -v. Duke përpjekur t'i adaptoni këto komanda për vete, merrni parasysh se flagat --mount dhe --volume përdorin formate të ndryshme parametrash. Pra, nuk mund ta zëvendësoni thjesht -v në --mount dhe të merrni një komandë funksionale.

Dallimi kryesor midis --mount dhe --volume është se kur përdoret flagu --volume të gjitha parametrat mblidhen së bashku, në një fushë, ndërsa kur përdoret --mount parametrat ndahen.

Kur punoni me --mount Parametrat paraqiten si çifte çelës-vlerë, dhe konkretisht, duket si key=value. Këto çifte ndahen me presje. Këtu janë parametrat e përdorur shpesh --mount:

  • type — lloji i montimit. Vlera pĂ«r çelĂ«sin pĂ«rkatĂ«s mund tĂ« jetĂ« bind, volume ose tmpfs. Po flasim kĂ«tu pĂ«r volumet, pra - na intereson vlera volume.
  • source — burimi i montimit. PĂ«r volumin e emĂ«ruar, kjo Ă«shtĂ« - emri i volumit. PĂ«r volumet e paemĂ«ruara ky çelĂ«s nuk tregohet. Ai mund tĂ« shkurtĂ«zohet nĂ« src.
  • destinacioni — rruga, ku skedari ose dosja montohet nĂ« kontejner. Ky çelĂ«s mund tĂ« shkurtĂ«zohet nĂ« dst ose target.
  • readonly — montohet volum, qĂ« Ă«shtĂ« i destinuar tĂ« lexueshĂ«m vetĂ«m. PĂ«rdorimi i kĂ«tij çelĂ«si nuk Ă«shtĂ« obligativ, nuk i caktohet ndonjĂ« vlerĂ«.

Ja një shembull përdorimi --mount me shumë parametra:

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

Përfundimet

Ja disa komanda të dobishme që mund të përdorni gjatë punës me volumet Docker:

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

Ja një listë e parametrave të përdorur shpesh për --mount, të aplikueshme në komandën si docker run --mount my_options my_image:

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

Tani, kur kemi përfunduar këtë seri materialesh mbi Docker, ka ardhur koha për të thënë disa fjalë rreth asaj se ku ata që studiojnë Docker mund të shkojnë më tej. Këtu është një artikull të shkëlqyer mbi Docker. Këtu është një libër mbi Docker (kur blini këtë libër, përpiquni të merrni botimin më të ri të tij). Këtu është një libër tjetër, i cili do të përputhet me ata që besojnë 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Ă« studionin fillestarĂ«t?

Eksplorojmë Docker, pjesa 6: punimi me të dhëna

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster