Uurime Dockerit, osa 6: andmetega töötamine

Käesolevas Docker'i materjalide tõlkeosas räägime andmete töötlemisest. Täpsemalt - Docker'i mahutidest. Nendes materjalides võrdlesime pidevalt Docker'i tarkvaramehhanisme erinevate söödavate analoogidega. Jätkame seda traditsiooni ka siin. Andmeid Docker'is võiks pidada maitseaineteks. Maailmas on palju erinevaid maitseaineid ja Docker'is on mitmeid viise andmete käsitlemiseks.

→ Osa 1: alused
→ Osa 2: terminid ja kontseptsioonid
→ Osa 3: Dockerfile'id
→ Osa 4: piltide suuruse vähendamine ja nende koostamise kiirendamine
→ Osa 5: käsud
→ Osa 6: andmete töötlemine

Uurime Dockerit, osa 6: andmetega töötamine

Pange tähele, et see materjal on valmistatud Docker'i mootori versiooniga 18.09.1 ja API versiooniga 1.39.

Andmed Docker'is võivad olla ajutised või püsivad. Alustame ajutiste andmete käsitlemisest.

Ajutine andmete salvestamine

Docker'i konteinerites saab ajutiste andmete töötlemiseks kasutada kahte meetodit.

Vaikimisi salvestatakse konteineris töötava rakenduse loodud failid konteineri kirjutamiseks toetavas kihis. Selle mehhanismi toimimiseks ei pea midagi erilist seadistama. See on odav ja efektiivne. Rakendusele piisab, kui salvestada andmed ja jätkata oma tegemisi. Kuid kui konteiner enam ei eksisteeri, kaovad ka sellisel lihtsal viisil salvestatud andmed.

Ajutiste failide salvestamiseks Docker'is võib kasutada veel ühte lahendust, mis sobib neile, kes vajavad kõrgemat jõudlust, võrreldes tavalise ajutise andmete salvestamise mehhanismiga. Kui teile ei ole oluline, et teie andmed oleksid salvestatud kauem, kui konteiner eksisteerib, saate konteinerile ühendada tmpfs - ajutise teabe salvestamise, mis kasutab hosti mälu. See kiirendab andmete kirjutamise ja lugemise operatsioonide teostamist.

Sageli on vaja andmeid säilitada ka pärast seda, kui konteiner peab toime tulema. Selleks on meil abiks püsivate andmete salvestamise mehhanismid.

Püsiv andmete salvestamine

On olemas kaks viis, kuidas andmete eluea pikendamiseks ületada konteineri eluiga. Üheks viisiks on bind mount tehnoloogia kasutamine. Sellise lähenemise puhul saab konteineriga ühendada näiteks reaalselt eksisteeriva kaustaga. Andmetega, mis on säilitatud sellises kaustas, saavad töötada ka protsessid, mis asuvad Dockerist väljaspool. Nii see välja näeb tmpfs-i mountimine ja bind mount tehnoloogia.

Uurime Dockerit, osa 6: andmetega töötamine
Tmpfs-i mountimine ja bind mount

Bind mount tehnoloogia kasutamise miinused seisnevad selles, et selle kasutamine raskendab andmete varundamist, andmete migreerimist ja andmete jagamist mitmete konteinerite vahel. Oluliselt parem on pideva andmete säilitamise jaoks kasutada Docker volumes.

Docker volumes

Volume on failisüsteem, mis asub host-masinast väljaspool konteinerit. Volumete loomise ja haldamisega tegeleb Docker. Siin on Docker volumes peamised omadused:

  • Need pakuvad pideva andmete säilitamise vahendeid.
  • Need on iseseisvad ja eraldatud konteineritest.
  • Neid saavad ühiselt kasutada erinevad konteinerid.
  • Need võimaldavad efektiivset andmete lugemist ja kirjutamist.
  • Volumes saab paigutada kaugteenuse pakkuja ressurssidele.
  • Need on šifreeritavad.
  • Neil saab anda nimesid.
  • Konteiner saab korraldada mahu eelneva täitmise andmetega.
  • Need on mugavad testimiseks.

Nagu näete, on Docker volumes imeliste omadustega. Rääkigem nüüd sellest, kuidas neid luua.

Volume loomine

Volumes saab luua Docker vahenditega või API päringute abil.

Siin on Dockerfile'i käsk, mis võimaldab konteineri käivitamisel luua volume.

VOLUME /my_volume

Sellise käsu kasutamisel loob Docker konteinerit luues volume, mis sisaldab andmeid, mis juba on määratud asukohas. Pange tähele, et kui loote volume Dockerfile'i abil, ei vabasta see teid vajadusest määrata volume'i mountimise koht.

Dockerfile'is saab volumesi luua ka JSON formaadis.

Lisaks saab volumesid luua käsurea tööriistade abil konteineri töötamise ajal.

Volume-dega töötamine käsurealt

▍Volume loomine

Iseseisva volume'i saate luua järgmise käsuga:

docker volume create --name my_volume

▍Teabe selgitamine volumede kohta

Ette näha Docker'i mahtude loendit, kasutage järgmist käsku:

docker volume ls

Konkreetset mahtu saab uurida järgmiselt:

docker volume inspect my_volume

▍Kustutamine

Mahuti saab kustutada järgmiselt:

docker volume rm my_volume

Kõik mahud, mida konteinerid ei kasuta, saab eemaldada järgmise käsuga:

docker volume prune

Enne Docker'i mahtude kustutamist küsitakse teilt, kas te soovite tõesti selle toimingu sooritada.

Kui maht on seotud mõne konteineriga, ei saa seda mahtu kustutada enne, kui vastav konteiner on kustutatud. Isegi kui konteiner on eemaldatud, ei pruugi Docker seda mõista. Kui see juhtub, võite kasutada järgmist käsku:

docker system prune

See on ette nähtud Docker'i ressursside puhastamiseks. Pärast selle käsu käivitamist peate saama kustutada mahud, mille olek oli varem valesti määratletud.

Lipud —mount ja —volume

Mahudega töötamiseks peate sageli käsu käivitamisel kasutama lippusid. dockerNäiteks, et luua maht konteineri loomise ajal, võite kasutada järgmist konstruktsiooni:

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

Kauges minevikus (enne 2017. aastat) oli populaarne lipp --volume. Seda lippu (võite kasutada ka selle lühenenud vormi, mis on -v) kasutati iseseisvate konteinerite jaoks, samas kui lipp --mount oli mõeldud Docker Swarm'i keskkonnaks. Kuid alates Docker 17.06-st saab lippu --mount kasutada igasugustes stsenaariumites.

Oluline on märkida, et lipu kasutamine --mount suureendab lisainformatsiooni hulka, mida käskluses tuleb märkida, kuid mitmete põhjuste tõttu on parem seda lippu kasutada, mitte --volume. Lipp --mount — see on ainus mehhanism, mis võimaldab töötada teenuste ja mahtude draiverite parameetrite määramisel. Lisaks on selle lipu kasutamine lihtsam.

Olemasolevates käskudes, mis on suunatud andmetele Docker'is, võite kohata paljusid näiteid lipu -vkasutamise kohta. Püüdke neid käsklusi enda jaoks kohandada, pidades meeles, et lipud --mount ja --volume kasutavad erinevaid parameetrite formaate. See tähendab, et te ei saa lihtsalt asendada -v . Tundub, et --mount ja saada toimivat käsku.

Peamine erinevus --mount ja --volume on see, et lipu kasutamisel --volume kõik parameetrid kogutakse koos ühte välja, samas kui teiste lipu kasutamisel --mount parameetrid on eraldatud.

Töötades --mount parameetrid on esitatud võtme-väärtuse paaridena, see näeb välja nagu key=value. Need paarid eraldatakse kirjutistega. Siin on sageli kasutatavad parameetrid --mount:

  • type — mount tüübi. Vastavuse võtme väärtus võib olla bind, volume või tmpfs. Siin räägime mahutist, st meid huvitab väärtus volume.
  • source — mount allikas. Nimega mahutite puhul on see — mahuti nimi. Nimega mahutite puhul seda võtit ei näidata. Seda võib lühendada src.
  • sihtkoht — tee, kuhu fail või kaust mahutisse monteeritakse. Seda võtit võib lühendada dst või target.
  • readonly — monteerib mahuti, mis on ette nähtud ainult lugemiseks. Selle võti kasutamine ei ole kohustuslik, sellele ei määrata väärtust.

Siin on näide, millel on mitmeid parameetreid: --mount docker run --mount type=volume,source=volume_name,destination=\/path\/in\/container,readonly my_image

Siin on kasulikud käsud, millega saab töötada Docker mahutitega:

Summary

docker volume create

  • docker volume inspect
  • docker volume ls
  • docker volume rm
  • Siin on nimekiri sageli kasutatavatest parameetritest
  • docker volume prune

, mida saab rakendada käskudes, mis on kujul --mountdocker run --mount my_options my_image type=volume:

  • source=volume_name
  • destination=\/path\/in\/container
  • Nüüd, kui oleme selle Docker materjalide seeria lõpetanud, on aeg rääkida mõnest sõnast selle kohta, kuhu need, kes õpivad Dockerit, edasi liikuda saavad.
  • readonly

suurepärane artikkel Dockerist. Siin raamat Dockerist (ostes seda raamatut, püüdke hankida selle uusim väljaanne). Siin veel üks raamat, mis sobib neile, kes arvavad, et praktika on parim viis tehnoloogia õppimiseks. Siin Milliseid Dockeriga seotud materjale soovitaksite algajatele?

Lugupeetud lugejad! Täna räägime Docker materjalide seeria tõlke järgmises osas andmete käsitlemisest. Eelkõige — Docker mahutitest.

Uurime Dockerit, osa 6: andmetega töötamine

Allikas: habr.com

Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid 🔥 Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster