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