VM au Docker?

Unajuaje ikiwa unahitaji Docker na sio VM? Unahitaji kuamua ni nini hasa unataka kutenganisha. Ikiwa unataka kutenganisha mfumo na rasilimali zilizojitolea zilizohakikishwa na vifaa vya kawaida, basi chaguo linapaswa kuwa VM. Ikiwa unahitaji kutenga programu zinazoendesha kama michakato tofauti ya mfumo, utahitaji Docker.

Kwa hivyo ni tofauti gani kati ya vyombo vya Docker na VM?

Mashine pepe (VM) ni kompyuta pepe iliyo na vifaa vyote dhahania na diski kuu ngumu ambayo OS mpya huru imewekwa pamoja na viendeshi vya kifaa pepe, usimamizi wa kumbukumbu na vipengee vingine. Hiyo ni, tunapata uondoaji wa maunzi halisi ambayo huturuhusu kuendesha kompyuta nyingi pepe kwenye kompyuta moja.
VM iliyosakinishwa inaweza kuchukua nafasi kwenye diski ya kompyuta yako kwa njia tofauti:

  • nafasi iliyowekwa ya diski ngumu, ambayo inaruhusu ufikiaji wa haraka wa diski ngumu ya kawaida na epuka kugawanyika kwa faili;
  • mgao wa kumbukumbu wenye nguvu. Wakati wa kusakinisha programu za ziada, kumbukumbu itagawiwa kwa ajili yao hadi ifikie kiwango cha juu zaidi kilichotengwa kwake.

Zaidi mashine pepe kwenye seva, kadri wanavyochukua nafasi zaidi na ndivyo wanavyohitaji usaidizi wa mara kwa mara kwa mazingira ambayo programu yako inahitaji kufanya kazi.

Docker — ni programu ya kuunda programu zinazotegemea kontena. Kontena na mashine pepe Zina faida zinazofanana lakini hufanya kazi tofauti. Vyombo huchukua nafasi ndogo kwa sababu hutumia tena rasilimali nyingi zinazoshirikiwa za mfumo mwenyeji kuliko VM, kwani tofauti na VM, hutoa uboreshaji katika kiwango cha OS badala ya vifaa. Mbinu hii inahakikisha kumbukumbu ndogo, uwasilishaji wa haraka, na uongezaji rahisi.

Chombo hutoa utaratibu mzuri zaidi wa kujumuisha programu kwa kutoa miingiliano inayohitajika kwa mfumo wa seva pangishi. Kipengele hiki huruhusu vyombo kushiriki kiini cha mfumo, huku kila kontena likifanya kazi kama mchakato tofauti wa mfumo wa uendeshaji ambao una seti yake ya maeneo ya kumbukumbu (nafasi yake ya anwani pepe). Kwa kuwa nafasi ya anwani pepe ya kila kontena ni yake mwenyewe, data ya maeneo tofauti ya kumbukumbu haiwezi kubadilishwa.
Mfumo wa uendeshaji asilia wa Docker ni Linux (Docker inaweza pia kutumika kwenye Windows, na kwenye MacOS), hutumia faida zake kuu, ambazo huiruhusu kupanga utenganishaji wa kernel. Inaendesha vyombo vya Docker kwenye Windows itatokea ndani ya mashine pepe yenye mfumo wa uendeshaji Linux, kwa sababu vyombo vinashiriki OS mwenyeji na OS ya msingi kwao ni Linux.

Chombo - inafanyaje kazi?

chombo ni kifupisho cha kiwango cha programu ambacho huchanganya msimbo na vitegemezi. Vyombo daima huundwa kutoka kwa picha, na kuongeza safu ya juu inayoweza kuandikwa na kuanzisha vigezo mbalimbali. Kwa sababu chombo kina safu yake ya uandishi na mabadiliko yote yamehifadhiwa kwenye safu hiyo, vyombo vingi vinaweza kushiriki ufikiaji wa picha kuu sawa.

Kila chombo kinaweza kusanidiwa kupitia faili katika mradi wa utungaji wa docker uliojumuishwa kwenye suluhisho kuu - docker-compose.yml. Huko unaweza kuweka vigezo mbalimbali kama vile jina la chombo, bandari, vitambulisho, mipaka ya rasilimali, tegemezi kati ya vyombo vingine. Ikiwa hutataja jina la chombo katika mipangilio, Docker itaunda chombo kipya kila wakati, na kukipa jina nasibu.

Wakati kontena inapoanzishwa kutoka kwa picha, Docker huweka mfumo wa faili wa kusoma-kuandika juu ya tabaka zozote hapa chini. Hapa ndipo michakato yote tunayotaka kontena yetu ya Docker iendeshe itaendesha.

Wakati Docker inapoanzisha kontena kwanza, safu ya kwanza ya kusoma-kuandika haina kitu. Wakati mabadiliko yanatokea, hutumiwa kwenye safu hii; kwa mfano, ikiwa unataka kubadilisha faili, faili hiyo itanakiliwa kutoka safu ya kusoma tu iliyo hapa chini hadi safu ya kusoma-kuandika.
Toleo la kusoma tu la faili bado litakuwepo, lakini sasa limefichwa chini ya nakala. Kiasi hutumika kuhifadhi data, bila kujali mzunguko wa maisha wa chombo. Kiasi huanzishwa wakati chombo kinaundwa.

Je, picha inahusiana vipi na chombo?

Picha - kipengele kikuu kwa kila chombo. Picha imeundwa kutoka kwa Dockerfile iliyoongezwa kwenye mradi na ni seti ya mifumo ya faili (tabaka) iliyowekwa juu ya kila mmoja na kuunganishwa pamoja, kusoma tu; idadi ya juu ya tabaka ni 127.

Katika moyo wa kila picha ni picha ya msingi, ambayo inatajwa na amri ya FROM - hatua ya kuingia wakati wa kujenga picha ya Dockerfile. Kila safu ni safu ya kusoma tu na inawakilishwa na amri moja ambayo inarekebisha mfumo wa faili, iliyoandikwa katika Dockerfile.
Ili kuchanganya tabaka hizi kuwa picha moja, Docker hutumia Mfumo wa Juu wa faili wa Muungano wa tabaka nyingi (AuFS imejengwa juu ya UnionFS), ikiruhusu faili na saraka tofauti kutoka kwa tabaka tofauti za faili kufunikwa kwa uwazi, na kuunda mfumo wa faili wa kushikamana.

Safu zina metadata inayokuruhusu kuhifadhi maelezo yanayohusiana kuhusu kila safu wakati wa utekelezaji na wakati wa ujenzi. Kila safu ina kiunga cha safu inayofuata; ikiwa safu haina kiunga, basi ni safu ya juu zaidi kwenye picha.

Dockerfile inaweza kuwa na amri kama vile:

  • FROM - mahali pa kuingilia wakati wa kuunda picha;
  • MAINTAINER - jina la mmiliki wa picha;
  • RUN - utekelezaji wa amri wakati wa mkusanyiko wa picha;
  • ADD - kunakili faili ya mwenyeji kwa picha mpya; ukitaja URL ya faili, Docker itaipakua kwenye saraka maalum;
  • ENV - vigezo vya mazingira;
  • CMD - huanza kuundwa kwa chombo kipya kulingana na picha;
  • ENTRYPOINT - amri inatekelezwa wakati chombo kinapoanza.
  • WORKDIR ni saraka ya kufanya kazi ya kutekeleza amri ya CMD.
  • USER - huweka UID kwa kontena iliyoundwa kulingana na picha.
  • VOLUME - huweka saraka ya mwenyeji kwenye chombo.
  • EXPOSE ni seti ya milango inayosikilizwa kwenye kontena.

Je, UnionFS inafanya kazi vipi?

MuunganoFS — mfumo wa faili ya stack ya huduma (FS) kwa Linux na FreeBSD. Mfumo huu wa faili hutekeleza utaratibu wa kunakili-kwa-kuandika (COW). Kitengo kinachofanya kazi cha UnionFS ndicho safu, na kila safu inapaswa kuchukuliwa kuwa mfumo tofauti wa faili kamili na wenye mpangilio wa saraka kuanzia mzizi. UnionFS huunda sehemu ya kupachika ya umoja kwa mifumo mingine ya faili na inaruhusu faili na saraka kutoka mifumo tofauti ya faili (inayoitwa uma) kuunganishwa katika mfumo mmoja wa faili unaoshikamana kwa uwazi kwa mtumiaji.

Yaliyomo kwenye saraka zilizo na njia sawa yataonekana pamoja katika saraka moja iliyounganishwa (katika nafasi moja ya majina) ya mfumo wa faili unaotokana.

UnionFS inachanganya tabaka kulingana na kanuni zifuatazo:

  • moja ya tabaka inakuwa safu ya juu, safu ya pili na inayofuata huwa safu za chini;
  • vitu vya safu vinapatikana kwa mtumiaji "kutoka juu hadi chini", i.e. ikiwa kitu kilichoombwa kiko kwenye safu ya "juu", inarudishwa, bila kujali uwepo wa kitu kilicho na jina moja kwenye safu ya "chini"; vinginevyo kitu cha safu ya "chini" kinarejeshwa; ikiwa kitu kilichoombwa hakipo wala huko, hitilafu "Hakuna faili au saraka kama hiyo" inarejeshwa;
  • safu ya kazi ni "juu", yaani, vitendo vyote vya mtumiaji kubadilisha data vinaonyeshwa tu kwenye safu ya juu, bila kuathiri yaliyomo ya tabaka za viwango vya chini.

Docker ndiyo teknolojia ya kontena inayotumika sana kwa utekelezaji wa programu. Imekuwa kiwango katika eneo hili, ikijengwa juu ya vikundi na nafasi za majina zinazotolewa na kernel. Linux.

Docker huturuhusu kupeleka programu kwa haraka na kutumia vyema mfumo wa faili kwa kugawanya kerneli ya OS kati ya vyombo vyote, inayoendesha kama michakato tofauti ya OS.

Chanzo: mapenzi.com

Nunua upangishaji wa kuaminika wa tovuti zilizo na ulinzi wa DDoS, seva za VPS VDS 🔥 Nunua upangishaji wa tovuti unaoaminika kwa ulinzi wa DDoS, seva za VPS VDS | ProHoster