Learning Docker, 6. daļa: Darbs ar datiem

Å odienas daļā par Docker materiālu sērijas tulkojumu mēs runāsim par darbu ar datiem. Jo Ä«paÅ”i par Docker sējumiem. Å ajos materiālos mēs pastāvÄ«gi salÄ«dzinājām Docker programmÄ“Å”anas mehānismus ar dažādām ēdamām analoÄ£ijām. Å eit mēs neatkāpsimies no Ŕīs tradÄ«cijas. Ä»aujiet datiem Docker bÅ«t garÅ”vielām. Pasaulē ir daudz garÅ”vielu, un Docker ir daudz veidu, kā strādāt ar datiem.

ā†’ 1. daļa: pamati
ā†’ 2. daļa: termini un jēdzieni
ā†’ 3. daļa: Dockerfaili
ā†’ 4. daļa: attēlu izmēra samazināŔana un to montāžas paātrināŔana
ā†’ 5. daļa: komandas
ā†’ 6. daļa: darbs ar datiem

Learning Docker, 6. daļa: Darbs ar datiem

LÅ«dzu, ņemiet vērā, ka Å”is materiāls tika sagatavots, izmantojot Docker dzinēja versiju 18.09.1 ā€‹ā€‹un API versiju 1.39.

Datus programmā Docker var uzglabāt īslaicīgi vai pastāvīgi. Sāksim ar pagaidu datiem.

Pagaidu datu glabāŔana

Ir divi veidi, kā pārvaldīt pagaidu datus Docker konteineros.

Pēc noklusējuma faili, ko izveidojusi lietojumprogramma, kas darbojas konteinerā, tiek glabāti rakstāmā konteinera slānÄ«. Lai Å”is mehānisms darbotos, nekas Ä«paÅ”s nav jākonfigurē. Tas izrādās lēts un jautrs. Lietojumprogrammai vienkārÅ”i jāsaglabā dati un jāturpina darÄ«t savas lietas. Taču pēc konteinera pārtraukÅ”anas pazudÄ«s arÄ« tik vienkārŔā veidā saglabātie dati.

Pagaidu failu glabāŔana programmā Docker ir vēl viens risinājums, kas ir piemērots gadÄ«jumiem, kad ir nepiecieÅ”ams augstāks veiktspējas lÄ«menis, salÄ«dzinot ar to, kas ir sasniedzams, izmantojot standarta pagaidu datu uzglabāŔanas mehānismu. Ja jums nav nepiecieÅ”ams, lai jÅ«su dati tiktu glabāti ilgāk, nekā pastāv konteiners, varat izveidot savienojumu ar konteineru tmpfs ā€” pagaidu informācijas krātuvi, kas izmanto resursdatora RAM. Tas paātrinās datu rakstÄ«Å”anas un nolasÄ«Å”anas darbÄ«bu izpildi.

Bieži gadās, ka dati ir jāsaglabā pat pēc konteinera pārtraukÅ”anas. Lai to izdarÄ«tu, mums ir nepiecieÅ”ami pastāvÄ«gi datu uzglabāŔanas mehānismi.

Pastāvīga datu glabāŔana

Ir divi veidi, kā padarÄ«t datu kalpoÅ”anas laiku garāku par konteinera kalpoÅ”anas laiku. Viens no veidiem ir izmantot stiprinājuma tehnoloÄ£iju. Izmantojot Å”o pieeju, konteinerā varat pievienot, piemēram, reālās dzÄ«ves mapi. Procesi ārpus Docker varēs strādāt arÄ« ar Ŕādā mapē saglabātajiem datiem. Tā Skaties tmpfs mount un bind mount tehnoloÄ£ija.

Learning Docker, 6. daļa: Darbs ar datiem
Montāžas tmpfs un iesieŔanas stiprinājums

SaistÄ«Å”anas stiprinājuma tehnoloÄ£ijas izmantoÅ”anas trÅ«kumi ir tādi, ka tās izmantoÅ”ana sarežģī datu dublÄ“Å”anu, datu migrāciju un datu koplietoÅ”anu starp vairākiem konteineriem. PastāvÄ«gai datu glabāŔanai ir daudz labāk izmantot Docker sējumus.

Volumes Docker

Sējums ir failu sistēma, kas atrodas resursdatorā ārpus konteineriem. Docker izveido un pārvalda sējumus. Å eit ir norādÄ«tas galvenās Docker sējumu Ä«paŔības:

  • Tie ir lÄ«dzeklis pastāvÄ«gai informācijas glabāŔanai.
  • Tie ir neatkarÄ«gi un atdalÄ«ti no konteineriem.
  • Tos var koplietot starp dažādiem konteineriem.
  • Tie ļauj organizēt efektÄ«vu datu lasÄ«Å”anu un rakstÄ«Å”anu.
  • Sējumus var ievietot attālā mākoņa nodroÅ”inātāja resursos.
  • Tos var Å”ifrēt.
  • Viņiem var dot vārdus.
  • Konteiners var nodroÅ”ināt sējuma iepriekŔēju aizpildÄ«Å”anu ar datiem.
  • Tie ir ērti testÄ“Å”anai.

Kā redzat, Docker sējumiem ir pārsteidzoÅ”as Ä«paŔības. Parunāsim par to, kā tos izveidot.

Sējumu izveide

Sējumus var izveidot, izmantojot Docker vai API pieprasījumus.

Šeit ir instrukcija Dockerfile, kas ļauj izveidot sējumu, startējot konteineru.

VOLUME /my_volume

Izmantojot lÄ«dzÄ«gu instrukciju, Docker pēc konteinera izveides izveidos sējumu, kurā bÅ«s norādÄ«tajā vietā jau esoÅ”ie dati. Ņemiet vērā: ja veidojat sējumu, izmantojot Dockerfile, tas neatbrÄ«vo jÅ«s no nepiecieÅ”amÄ«bas norādÄ«t sējuma pievienoÅ”anas punktu.

Varat arī izveidot sējumus Dockerfile, izmantojot JSON formātu.

Turklāt sējumus var izveidot, izmantojot komandrindas rīkus, kamēr konteiners darbojas.

Darbs ar sējumiem no komandrindas

ā–Skaļuma izveide

Varat izveidot atseviŔķu sējumu ar Ŕādu komandu:

docker volume create ā€”-name my_volume

ā–Uzziniet informāciju par apjomiem

Lai skatÄ«tu Docker sējumu sarakstu, izmantojiet Å”o komandu:

docker volume ls

Varat izpētīt noteiktu apjomu, piemēram:

docker volume inspect my_volume

ā–Sējuma dzÄ“Å”ana

Varat dzēst sējumu Ŕādi:

docker volume rm my_volume

Lai noņemtu visus sējumus, kurus neizmanto konteineri, varat izmantot Ŕādu komandu:

docker volume prune

Pirms sējumu dzÄ“Å”anas Docker lÅ«gs apstiprināt Å”o darbÄ«bu.

Ja sējums ir saistÄ«ts ar konteineru, Å”o sējumu nevar izdzēst, kamēr nav dzēsts atbilstoÅ”ais konteiners. Tajā paŔā laikā, pat ja konteiners tiek izdzēsts, Docker to ne vienmēr saprot. Ja tā notiek, varat izmantot Ŕādu komandu:

docker system prune

Tas ir paredzēts Docker resursu tÄ«rÄ«Å”anai. Pēc Ŕīs komandas izpildes jums vajadzētu bÅ«t iespējai izdzēst sējumus, kuru statuss iepriekÅ” bija nepareizs.

--mount un --volume karodziņi

Lai strādātu ar sējumiem, izsaucot komandu docker, jums bieži bÅ«s jāizmanto karodziņi. Piemēram, lai konteinera izveides laikā izveidotu sējumu, varat izmantot Å”o konstrukciju:

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

Senatnē (lÄ«dz 2017. gadam) karogs bija populārs --volume. Sākotnēji Å”is karogs (var izmantot arÄ« saÄ«sinātā veidā, tad izskatās -v) tika izmantots atseviŔķiem konteineriem un karogam --mount - Docker Swarm vidē. Tomēr no Docker 17.06 karogs --mount var izmantot jebkurā scenārijā.

Jāņem vērā, ka, izmantojot karogu --mount palielinās papildu datu apjoms, kas jānorāda komandā, taču vairāku iemeslu dēļ labāk ir izmantot Å”o karogu, nevis --volume. Karogs --mount ir vienÄ«gais mehānisms, kas ļauj strādāt ar pakalpojumiem vai norādÄ«t skaļuma draivera opcijas. Turklāt ar Å”o karogu ir vieglāk strādāt.

EsoÅ”ajos Docker datu manipulācijas komandu piemēros var redzēt daudzus karoga izmantoÅ”anas piemērus -v. Mēģinot pielāgot Ŕīs komandas sev, paturiet prātā, ka karodziņi --mount Šø --volume izmantot dažādus parametru formātus. Tas ir, jÅ«s nevarat vienkārÅ”i aizstāt -v par --mount un iegÅ«t darba komandu.

Galvenā atŔķirÄ«ba starp --mount Šø --volume tas ir, izmantojot karogu --volume visi parametri tiek apkopoti vienā laukā un, kad tiek izmantoti --mount parametri ir atdalÄ«ti.

Strādājot ar --mount parametri tiek attēloti kā atslēgu-vērtību pāri, proti, izskatās key=value. Šie pāri ir atdalīti ar komatiem. Šeit ir visbiežāk izmantotās iespējas --mount:

  • type - stiprinājuma veids. AttiecÄ«gās atslēgas vērtÄ«ba var bÅ«t saistoÅ”s, tilpums vai tmpfs. Mēs Å”eit runājam par apjomiem, tas ir, mÅ«s interesē nozÄ«me volume.
  • source - stiprinājuma avots. Nosauktiem sējumiem Å”is ir sējuma nosaukums. Sējumiem bez nosaukuma Ŕī atslēga nav norādÄ«ta. To var saÄ«sināt lÄ«dz src.
  • destination - ceļŔ, uz kuru fails vai mape ir ievietots konteinerā. Å o taustiņu var saÄ«sināt lÄ«dz dst vai target.
  • readonly - uzstāda paredzēto apjomu tikai lasÄ«Å”anai. Å Ä«s atslēgas lietoÅ”ana nav obligāta, un tai netiek pieŔķirta nekāda vērtÄ«ba.

Å eit ir lietoÅ”anas piemērs --mount ar daudzām iespējām:

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

Rezultāti

Šeit ir dažas noderīgas komandas, kuras varat izmantot, strādājot ar Docker sējumiem:

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

Šeit ir saraksts ar visbiežāk izmantotajām opcijām --mount, piemērojama tādā komandā kā docker run --mount my_options my_image:

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

Tagad, kad esam pabeiguÅ”i Å”o Docker sēriju, ir pienācis laiks pateikt dažus vārdus par to, kur Docker apguvēji var doties tālāk. Å”eit ir lielisks labs raksts par Docker. Å”eit ir grāmata par Docker (pērkot Å”o grāmatu, mēģiniet iegÅ«t jaunāko izdevumu). Å”eit ir vēl viena grāmata tiem, kas domā, ka prakse ir labākais veids, kā apgÅ«t tehnoloÄ£ijas.

Cienījamie lasītāji! Kādus materiālus par Docker jūs ieteiktu apgūt iesācējiem?

Learning Docker, 6. daļa: Darbs ar datiem

Avots: www.habr.com

Pievieno komentāru