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.
→
→
→
→
→
→
Pange tähele, et see materjal on valmistatud Docker'i mootori versiooniga 18.09.1 ja API versiooniga .
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 tmpfs-i mountimine ja bind mount tehnoloogia.

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_volumeSellise 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 lsKonkreetset mahtu saab uurida järgmiselt:
docker volume inspect my_volume▍Kustutamine
Mahuti saab kustutada järgmiselt:
docker volume rm my_volumeKõik mahud, mida konteinerid ei kasuta, saab eemaldada järgmise käsuga:
docker volume pruneEnne 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 pruneSee 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 , või . Siin räägime mahutist, st meid huvitab väärtusvolume.source— mount allikas. Nimega mahutite puhul on see — mahuti nimi. Nimega mahutite puhul seda võtit ei näidata. Seda võib lühendadasrc.sihtkoht— tee, kuhu fail või kaust mahutisse monteeritakse. Seda võtit võib lühendadadstvõitarget.readonly— monteerib mahuti, mis on ette nähtud . 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 inspectdocker volume lsdocker volume rmSiin on nimekiri sageli kasutatavatest parameetritestdocker volume prune
, mida saab rakendada käskudes, mis on kujul --mountdocker run --mount my_options my_image type=volume:
source=volume_namedestination=\/path\/in\/containerNüü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. raamat Dockerist (ostes seda raamatut, püüdke hankida selle uusim väljaanne). veel üks raamat, mis sobib neile, kes arvavad, et praktika on parim viis tehnoloogia õppimiseks. 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.
Allikas: habr.com
