Mācāmies Docker, 6. daļa: darbs ar datiem

Š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.

→ 1. daļa: pamati
→ 2. daļa: termini un koncepti
→ 3. daļa: Dockerfile faili
→ 4. daļa: attēlu samazināšana un to izveides paātrināšana
→ 5. daļa: komandas
→ 6. daļa: datu apstrāde

Mācāmies Docker, 6. daļa: darbs ar datiem

Lūdzu, ņemiet vērā, ka šis materiāls sagatavots, izmantojot Docker versiju 18.09.1 un API versiju 1.39.

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ā izskatās tmpfs montēšana un bind mount tehnoloģija.

Mācāmies Docker, 6. daļa: darbs ar datiem
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_volume

Izmantojot šā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 ls

Konkrē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_volume

Lai dzēstu visas sērijas, kuras nav saistītas ar konteineriem, varat izmantot tādu komandu:

docker volume prune

Pirms 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 prune

Tā 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 bind, volume vai tmpfs. Mēs runājam par tiltiem, proti, mūs interesē vērtība volume.
  • 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īdz src.
  • destination — ceļš, kurā faila vai mapes tiek montētas konteinerā. Šo atslēgu var saīsināt līdz dst vai target.
  • readonly — montē tiltu, kas paredzēts tikai lasīšanai. Šī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_image

Secinājumi

Šeit ir noderīgas komandas, ar kurām var strādāt, lietojot Docker tiltiem:

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

Šeit ir bieži lietoti parametri saraksts --mount, kas piemērojami komandai formā docker run --mount my_options my_image:

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

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. Šeit liela laba grāmata par Docker. Šeit grāmata par Docker (pērkot šo grāmatu, mēģiniet iegūt visjaunāko tās izdevumu). Šeit 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?

Mācāmies Docker, 6. daļa: darbs ar datiem

Avots: habr.com

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster