Uurime Docker'it, osa 6: andmetega töötamine

Selles Dockeri materjali seeria osas rÀÀgime andmete haldamisest. EelkĂ”ige rÀÀgime Dockeri volumest. Kogu selle seeria jooksul oleme pidevalt vĂ”rdlenud Dockeri mehhanisme erinevate toidu analoogidega. JĂ€tkame seda traditsiooni ka siin. Andmeid Dockeris vĂ”iks vĂ”rrelda vĂŒrtsidega. Maailmas on palju erinevaid vĂŒrtse, ja Dockeris on palju erinevaid andmehalduse viise.

→ Osa 1: alused
→ Osa 2: terminid ja kontseptsioonid
→ Osa 3: Dockerfile'id
→ Osa 4: piltide suuruste vĂ€hendamine ja nende koostamise kiirendamine
→ Osa 5: kĂ€sud
→ Osa 6: andmete haldamine

Uurime Docker'it, osa 6: andmetega töötamine

Pange tÀhele, et see materjal on koostatud Docker mootoriga versioon 18.09.1 ja API versiooniga 1.39.

Andmed Dockeris vĂ”ivad olla kas ajutised vĂ”i pĂŒsivad. Alustame ajutistest andmetest.

Ajutine andmete salvestamine

Dockeri konteinerites saab ajutiste andmete haldamiseks kasutada kahte vÔimalust.

Vaikimisi salvestatakse konteineris töötava rakenduse loodud failid konteineri kirjutusvÔimelisse kihti. Selle mehhanismi toimimiseks ei ole vaja midagi spetsiaalselt seadistada. See on odav ja efektiivne. Rakendusele on piisav andmete salvestamine ja oma tegevuste jÀtkamine. Siiski, kui konteiner lÔpetab oma olemise, kaovad ka andmed, mis on sellisel lihtsal viisil salvestatud.

Ajutiste failide salvestamiseks Dockeris on veel ĂŒks lahendus, mis sobib olukordadesse, kus on vajalik kĂ”rgem jĂ”udlus vĂ”rreldes tavapĂ€rase ajutiste andmete salvestamise mehhanismiga. Kui te ei vaja, et teie andmed pĂŒsiksid kauem kui konteiner, saate konteinerile ĂŒhendada tmpfs — mĂ€lu ajutise salvestuse, mis kasutab hosti RAM-i. See vĂ”imaldab kiirendada andmete kirjutamise ja lugemise tehingute toimimist.

Sageli on nii, et andmeid tuleb hoida ka pĂ€rast konteineri lĂ”petamist. Selleks vajame pĂŒsiva andmete salvestamise mehhanisme.

PĂŒsiv andmete salvestamine

On olemas kaks viisi, kuidas andmete eluiga pikendada vĂ”rreldes konteineri elueaga. Üks viis on bind mount tehnoloogia kasutamine. Sellisel juhul saab konteineriga ĂŒhendada nĂ€iteks reaalselt olemasoleva kausta. Andmetega, mis asuvad sellises kaustas, saavad töötada ka protsessid, mis asuvad vĂ€ljaspool Dockerit. Nii nĂ€evad vĂ€lja tmpfs mountimine ja bind mount tehnoloogia.

Uurime Docker'it, osa 6: andmetega töötamine
tmpfs mountimine ja bind mount

Bind mount tehnoloogia kasutamise miinused seisnevad selles, et selle kasutamine raskendab andmete varundamist, andmete migreerimist ja andmete jagamist mitme konteineri vahel. Palju parem on kasutada Dockeri volume pĂŒsivaks andmete salvestamiseks.

Dockeri volumid

Volume on failisĂŒsteem, mis asub hostmasinas konteineritest vĂ€ljaspool. Volumite loomise ja haldamise eest vastutab Docker. Siin on Dockeri volumi peamised omadused:

  • Need on vahendid pĂŒsiva andmete salvestamiseks.
  • Nad on iseseisvad ja eraldatud konteineritest.
  • Nendega saavad ĂŒhiselt kasutada erinevad konteinerid.
  • Nad vĂ”imaldavad efektiivset andmete lugemist ja kirjutamist.
  • Volumes saab paigutada kaugteenuse pakkuja ressurssidele.
  • Neid saab krĂŒpteerida.
  • Neile saab anda nimesid.
  • Konteiner saab enne tĂ€ita volumi andmetega.
  • Need on mugavad testimiseks.

Nagu nÀete, omadused Dockeri volumid on erakordsed. RÀÀgime, kuidas neid luua.

Volumite loomine

Volumeid saab luua Docker kasutades vÔi API pÀringute abil.

Siin on Dockerfile'is juhis, mis vÔimaldab luua volumi konteineri kÀivitamisel.

VOLUME /my_volume

Sellise kÀsu kasutamisel loob Docker konteineri loomise jÀrel volumi, mis sisaldab juba olemasolevaid andmeid. Pange tÀhele, et Dockerfile'i kasutamisel volumi loomine ei vabasta teid kohustusest mÀÀrata volumi mountimispunkt.

Volumeid saab Dockerfile'is luua ka JSON formaadis.

Lisaks saab volumeid luua kÀsurea abil konteineri töö ajal.

Volumitega töötamine kÀsurealt

▍Volumi loomine

Iseseisva volumi loomine on vÔimalik jÀrgmise kÀsu abil:

docker volume create —-name my_volume

▍Teabe leidmine volumide kohta

Dockeri volumite nimekirja vaatamiseks kasutage jÀrgmist kÀsku:

docker volume ls

Konkreetse volumi uurimiseks tÔhusalt:

docker volume inspect my_volume

▍Volumi eemaldamine

Volumi eemaldamine on vÔimalik jÀrgmisel viisil:

docker volume rm my_volume

KÔikide mahutite, mida ei kasutata konteineritega, eemaldamiseks saate kasutada jÀrgmist kÀsku:

docker volume prune

Enne mahutite kustutamist palub Docker teil kinnitada selle toimingu sooritamine.

Kui mahuti on seotud mingi konteineriga, ei saa sellist mahutit kustutada enne, kui vastav konteiner on eemaldatud. Samuti, isegi kui konteiner on eemaldatud, ei pruugi Docker seda alati mĂ”ista. Kui see juhtub — vĂ”ite kasutada jĂ€rgmist kĂ€sku:

docker system prune

See on mÔeldud Docker'i ressursside puhastamiseks. PÀrast selle kÀsu tÀitmist peaksite saama kustutada mahutid, mille olek oli varem ekslikult mÀÀratud.

FlĂ€kid —mount ja —volume

Mahutitega töötamiseks peate kĂ€su vĂ€ljakutsumisel docker, sageli kasutama flĂ€kke. NĂ€iteks, et luua mahuti konteineri loomise kĂ€igus, saate kasutada jĂ€rgmist sĂŒntaksit:

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

Kauges minevikus (enne 2017. aastat) oli populaarne flĂ€kk --volume. Alguses kasutati seda flĂ€ki (mida saab kasutada ka lĂŒhendatud kujul, siis nĂ€eb see vĂ€lja nagu -v) iseseisvate konteinerite jaoks, samas kui flĂ€kk --mount oli mĂ”eldud Docker Swarmi keskkonnas. Kuid alates Docker 17.06-st saab flĂ€kk --mount kasutada kĂ”igis stsenaariumites.

Tuleb mĂ€rkida, et flĂ€ki kasutamisel --mount kasvab tĂ€iendavate andmete hulk, mida tuleb kĂ€skluses mĂ€rkida, kuid mitmel pĂ”hjusel on parem kasutada just seda flĂ€ki, mitte --volume. Lipuke --mount — see on ainus mehhanism, mis vĂ”imaldab töötada teenustega vĂ”i mÀÀrata mahuti draiveri parameetreid. Lisaks on selle flĂ€kiga töötamine lihtsam.

Kohalike kĂ€skude nĂ€idetes, mis on suunatud andmetega töötamisele Dockeris, vĂ”ite leida palju nĂ€iteid flĂ€ki -v. PĂŒĂŒdes nende kĂ€ske enda jaoks kohandada, arvestage, et flĂ€kid --mount ja --volume kasutavad erinevaid parameetrite formaate. See tĂ€hendab, et te ei saa lihtsalt asendada -v jĂ€rgnevaga --mount ja saada töötavat kĂ€sku.

Peamine erinevus flĂ€kkide vahel --mount ja --volume on see, et flĂ€ki kasutamisel --volume kogutakse kĂ”ik parameetrid kokku ĂŒhte vĂ€ljasse, samas kui --mount parameetrid on eraldi.

Töötades --mount parameetrid esitatakse vÔtme-vÀÀrtuse paaridena, nagu nÀiteks key=value. Need paarid eraldatakse komadega. Siin on sageli kasutatavad parameetrid --mount:

  • type — montaaĆŸi tĂŒĂŒp. Vastavaks vĂ”tme vÀÀrtuseks vĂ”ivad olla bind, volume vĂ”i tmpfs. RÀÀgime siin mahutitest, seega — meid huvitab vÀÀrtus volume.
  • source — montaaĆŸi allikas. Nimetatud mahutite puhul on see — mahuti nimi. Nimeta mahutite puhul seda vĂ”ti ei nĂ€idata. Seda saab lĂŒhendada src.
  • destination — tee, kuhu fail vĂ”i kaust montaaĆŸitakse konteineris. Seda vĂ”tit saab lĂŒhendada dst vĂ”i target.
  • readonly — montaaĆŸib mahutit, mis on mĂ”eldud ainult lugemiseks. Selle vĂ”tme kasutamine ei ole kohustuslik, vÀÀrtust ei mÀÀrata.

Siin on nÀide, kuidas kasutada --mount paljude parameetritega:

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

KokkuvÔte

Siin on kasulikud kÀsud, millega saate töötada Docker'i mahutitega:

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

Siin on nimekiri sageli kasutatavatest parameetritest --mount, mida saab kasutada kÀsus docker run --mount my_options my_image:

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

NĂŒĂŒd, kui oleme selle Docker'i materjalide sarja lĂ”petanud, on aeg öelda paar sĂ”na selle kohta, kuhu suunduda edasi neile, kes uurivad Docker'i. Siin on suurepĂ€rane artikkel Docker'ist. Siin on raamat Docker'ist (ostes proovige hankida selle kĂ”ige vĂ€rskem vĂ€ljaanne). Siin on veel ĂŒks raamat, mis sobib neile, kes usuvad, et praktika on parim viis tehnoloogiate Ă”ppimiseks.

Lugupidamisega lugejad! Milliseid Docker'i materjale soovitaksite algajatele uurida?

Uurime Docker'it, osa 6: andmetega töötamine

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster