Šodienas daļā par Docker tulkošanai mēs runāsim par datu apstrādi. Īpaši pievēršoties Docker tiltiem. Šajos materiālos pastāvīgi salīdzinājām Docker programmatūras mehānismus ar dažādām ēdamām analoģijām. Neiziesim no šīs tradīcijas arī šoreiz. Dati Docker būs kā garšvielas. Pasaule piedāvā daudz dažādu garšvielu, un Docker piedāvā daudz veidu, kā strādāt ar datiem.
→
→
→
→
→
→
Lūdzu, ņemiet vērā, ka šis materiāls sagatavots, izmantojot Docker versiju 18.09.1 un API versiju .
Dati Docker var tikt glabāti vai nu pagaidu, vai ilgstoši. Sāksim ar pagaidu datiem.
Pagaidu datu glabāšana
Docker konteineros pagaidu datu apstrāde var tikt organizēta divos veidos.
Pēc noklusējuma, failus, kurus rada programma, kas darbojas konteinerā, saglabā ierakstīšanas atbalstošajā konteineru slānī. Lai šis mehānisms darbotos, nekas īpašs nav jāiestata. Tas ir lēti un efektīvi. Programmai vienkārši jāsaglabā dati un jāturpina darboties. Tomēr pēc tam, kad konteiners pārtrauks eksistēt, pazudīs arī šādā veidā saglabātie dati.
Vēl viens risinājums pagaidu failu glabāšanai Docker ir izdevīgs tiem gadījumiem, kad nepieciešams augstāks veiktspējas līmenis, nekā tas, ko var panākt ar standarta pagaidu datu glabāšanas mehānismu. Ja jums nav nepieciešams, lai jūsu dati tiktu glabāti ilgāk par konteineru eksistenci, jūs varat pieslēgt konteineram tmpfs — pagaidu informācijas glabātuvi, kas izmanto saimnieka operatīvo atmiņu. Tas paātrinās datu rakstīšanas un lasīšanas operācijas.
Bieži vien ir nepieciešams uzglabāt datus arī pēc tam, kad konteiners pārtrauks eksistēt. Tāpēc mums noderēs pastāvīgas datu glabāšanas mehānismi.
Pastāvīga datu glabāšana
Ir divi veidi, kā pagarināt datu dzīves ciklu, salīdzinot ar konteineru dzīves ciklu. Viens no veidiem ir izmantot bind mount tehnoloģiju. Šādā pieejā var pievienot, piemēram, reālu esošu mapi. Dati, kas uzglabāti šādā mapē, būs pieejami arī procesiem, kas atrodas ārpus Docker. Lūk, kā tmpfs montēšana un bind mount tehnoloģija.

tmpfs montēšana un bind mount
Bind mount tehnoloģijas trūkums ir tāds, ka tās izmantošana sarežģī datu dublēšanu, migrāciju, kā arī datu koplietošanu starp vairākiem konteineriem. Ir daudz labāk izmantot Docker apjomu pastāvīgai datu uzglabāšanai.
Docker apjomi
Apjoms ir failu sistēma, kas atrodas uz viesmašīnas ārpus konteineriem. Docker veic apjomu izveidi un pārvaldību. Šeit ir galvenās Docker apjomu īpašības:
- Tie ir līdzekļi pastāvīgai informācijas uzglabāšanai.
- Tie ir patstāvīgi un atdalīti no konteineriem.
- Tie var koplietot dažādi konteineri.
- Tie ļauj efektīvi organizēt datu lasīšanu un ierakstīšanu.
- Apjomus var izvietot attālinātu mākoņu pakalpojumu sniedzēju resursos.
- Tos var šifrēt.
- Tiem var piešķirt nosaukumus.
- Konteineris var iepriekš piepildīt apjomu ar datiem.
- Tie ir ērti testēšanai.
Kā redzat, Docker apjomi ir izcili līdzekļi. Apskatīsim, kā tos izveidot.
Apjomu izveide
Apjomus var izveidot ar Docker palīdzību vai izmantojot pieprasījumus uz API.
Lūk, Dockerfile instrukcija, kas ļauj izveidot apjomu, kad konteineris tiek palaists.
VOLUME /my_volumeIzmantojot šādu Docker instrukciju, pēc konteineru izveides tiks izveidots apjoms, kas satur datus, kas jau atrodas norādītajā vietā. Ņemiet vērā, ka, ja izveidojat apjomu, izmantojot Dockerfile, tas neatsedz jūs no nepieciešamības norādīt apjoma montēšanas punktu.
Apjomus Dockerfile var izveidot arī, izmantojot JSON formātu.
Turklāt apjomus var izveidot, izmantojot komandrindas rīkus konteinera darbības laikā.
Darbs ar apjomiem no komandrindas
▍Apjoma izveide
Patstāvīgu apjomu var izveidot, izmantojot šādu komandu:
docker volume create —-name my_volume▍Informācijas noskaidrošana par apjomiem
Lai iegūtu Docker sēriju sarakstu, izmantojiet sekojošo komandu:
docker volume lsKonkrēta sērija jāizpēta šādi:
docker volume inspect my_volume▍Sērijas dzēšana
Sēriju var dzēst šādi:
docker volume rm my_volumeLai dzēstu visas sērijas, kuras nav saistītas ar konteineriem, varat izmantot tādu komandu:
docker volume prunePirms sēriju dzēšanas Docker lūgs apstiprinājumu šo darbību veikšanai.
Ja sērija ir saistīta ar kādu konteineru, to nevarēs dzēst, kamēr attiecīgais konteiners netiks dzēsts. Pat ja konteiners ir dzēsts, Docker ne vienmēr to saprot. Ja tas notiek — varat izmantot sekojošo komandu:
docker system pruneTā ir paredzēta Docker resursu tīrīšanai. Pēc šīs komandas izpildes jums vajadzētu būt iespējai dzēst sērijas, kuru statuss iepriekš tika noteikts nepareizi.
Flagi —mount un —volume
Lai strādātu ar sērijām, jums, izsaucot komandu docker, bieži būs jāizmanto flagi. Piemēram, lai izveidotu sēriju konteineru veidošanas laikā, var izmantot šādu konstrukciju:
docker container run --mount source=my_volume, target=\/container\/path\/for\/volume my_image Senāk (pirms 2017. gada) populārs bija flags --volume. Sākotnēji šo flagu (to var izmantot arī saīsinātā veidā, tad tas izskatās kā -v) izmantoja patstāvīgiem konteineriem, bet flagu --mount izmantoja Docker Swarm vidē. Tomēr kopš Docker 17.06 flagu --mount var izmantot jebkurā scenārijā.
Jāatzīmē, ka izmantojot flagu --mount , palielinās papildus datu apjoms, kas jānorāda komandā, bet, vairāku iemeslu dēļ, labāk ir izmantot tieši šo flagu, nevis --volume. Karogs --mount — tas ir vienīgais mehānisms, kas ļauj strādāt ar pakalpojumiem vai norādīt sērijas vadītāja parametrus. Turklāt ar šo flagu ir vieglāk strādāt.
Esošajos komandu piemēros, kas attiecas uz datu apstrādi Docker, jūs varat sastapt daudz piemēru, kur tiek izmantots flags -v. Cenšoties pielāgot šīs komandas sev, ņemiet vērā, ka flagi --mount un --volume izmanto dažādus parametrus formātus. Tātad, nav iespējams vienkārši nomainīt -v uz --mount un iegūt strādājošu komandu.
Galvenā atšķirība starp --mount un --volume ir tāda, ka izmantojot flagu --volume visi parametri tiek apkopoti kopā, vienā laukā, bet izmantojot --mount parametri tiek dalīti.
Strādājot ar --mount parametri tiek attēloti kā atslēgas-vērtības pāri, proti, tas izskatās šādi key=value. Šos pārus atdala ar komatiem. Šeit ir bieži lietoti parametri --mount:
type— mount tips. Attiecīgā atslēja var pieņemt šādas vērtības , vai . Mēs runājam par tiltiem, proti, mūs interesē vērtībavolume.source— montēšanas avots. Nosauktām tiltiem tā ir tilta nosaukums. Ne-nosauktajiem tiltiem šo atslēgu nenorāda. To var saīsināt līdzsrc.destination— ceļš, kurā faila vai mapes tiek montētas konteinerā. Šo atslēgu var saīsināt līdzdstvaitarget.readonly— montē tiltu, kas paredzēts . Šīs atslēgas lietošana nav obligāta, vērtība tai netiek piešķirta.
Šeit ir piemērs, kā lietot --mount ar daudzām parametriem:
docker run --mount type=volume,source=volume_name,destination=\/path\/in\/container,readonly my_imageSecinājumi
Šeit ir noderīgas komandas, ar kurām var strādāt, lietojot Docker tiltiem:
docker volume createdocker volume lsdocker volume inspectdocker volume rmdocker volume prune
Šeit ir bieži lietoti parametri saraksts --mount, kas piemērojami komandai formā docker run --mount my_options my_image:
type=volumesource=volume_namedestination=\/path\/in\/containerreadonly
Tagad, kad mēs esam pabeiguši šo materiālu sēriju par Docker, pienācis laiks pateikt dažus vārdus par to, kur cilvēkiem, kas apgūst Docker, būtu jāvirzās tālāk. liela laba grāmata par Docker. grāmata par Docker (pērkot šo grāmatu, mēģiniet iegūt visjaunāko tās izdevumu). vēl viena grāmata, kas derēs tiem, kas uzskata, ka prakse ir labākais veids, kā apgūt tehnoloģijas.
Cienījamie lasītāji! Kurus materiālus par Docker jūs ieteiktu apgūt iesācējiem?
Avots: habr.com
