VM ama Docker?

Sida loo fahmo inaad u baahan tahay Docker oo aanad u baahnayn VM? Waxaad u baahan tahay inaad go'aamiso waxa dhabta ah ee aad rabto inaad go'doomiso. Haddii aad rabto in aad go'doomiso nidaam leh ilo dammaanad leh iyo qalab casri ah, markaa doorashadu waa inay ku dhacdaa VM. Haddii aad u baahan tahay inaad ka saarto codsiyada socodsiinta habka nidaamka kala duwan, waxaad u baahan doontaa Docker.

Haddaba waa maxay farqiga u dhexeeya weelasha Docker iyo VM-yada?

Mashiinka Virtual (VM) waa kumbiyuutar dalwad ah oo leh dhammaan aaladaha farsamada gacanta iyo Hard disk-ga, kaas oo lagu rakibay OS cusub oo madax-bannaan oo ay la socdaan darawallada aaladaha farsamada, maareynta xusuusta iyo qaybo kale. Taasi waa, waxaan helnaa soo saarista qalabka jireed ee kuu ogolaanaya inaad ku shaqeyso kombiyuutaro badan oo kumbiyuutar ah hal kumbuyuutar.
VM ku rakiban siyaalo kala duwan ayuu booska diskka ugu qaadan karaa:

  • meel bannaan oo adag oo go'an, taas oo u oggolaanaysa in si degdeg ah loo galo disk-ga casriga ah oo ka fogaanaya jajabinta faylka;
  • qoondaynta xusuusta firfircoon. Marka la rakibo codsiyada dheeraadka ah, xusuusta si firfircoon ayaa loo qoondayn doonaa iyaga ilaa ay ka gaarto qaddarka ugu badan ee loo qoondeeyay.

Inta badan mashiinada farsamada ee server-ka, boos badan oo ay qaadaan, iyo sidoo kale waxay u baahan yihiin taageerada joogtada ah ee deegaanka looga baahan yahay codsigaaga si uu u shaqeeyo.

Docker waa software lagu dhisayo codsiyada ku salaysan weelasha. Konteenarada iyo mashiinada farsamada gacanta ayaa leh faa'iidooyin isku mid ah, laakiin si kala duwan ayay u shaqeeyaan. Koonteennadu waxay qaataan meel yar, sababtoo ah si xad dhaaf ah u isticmaal kheyraad badan oo la wadaago nidaamka martida loo yahay marka loo eego VM, sababtoo ah Si ka duwan VM, waxay ku siisaa qaab-dhismeed heer OS ah, maaha qalab. Habkani waxa uu bixiyaa raad xusuus yar, hawlgelin degdeg ah, iyo miisaan fudud.

Weelku wuxuu bixiyaa hab wax ku ool ah oo loogu talagalay soo koobida codsiyada iyadoo la siinayo isdhexgalka lagama maarmaanka u ah nidaamka martida loo yahay. Habkani wuxuu u ogolaanayaa weelasha in ay wadaagaan xudunta nidaamka, halkaas oo mid kasta oo ka mid ah weelku u socdo hab gaar ah oo ka mid ah OS-ga ugu weyn, kaas oo leh qaybo u gaar ah oo xusuusta ah (meel u gaar ah cinwaanka cinwaanka). Maaddaama weel walba meeshiisa ciwaanka dalwaddu ay gaar u tahay, xogta ka tirsan meelaha xusuusta ee kala duwan lama beddeli karo.
Nidaamka asalka ah ee Docker waa Linux (Docker sidoo kale waxaa loo isticmaali karaa Windows iyo MacOS), waxay isticmaashaa faa'iidooyinkeeda ugu muhiimsan, taas oo u oggolaanaysa inay habayso kernel kala qaybsan. Daahfurka weelasha Docker ee Windows waxay ka dhici doontaa gudaha mashiinka farsamada Linux, sababtoo ah weelasha waxay wadaagaan OS ee nidaamka martida loo yahay iyo OS ugu weyn iyaga waa Linux.

Konteenar - sidee buu u shaqeeyaa?

Kontayn waa abstraction heerka codsiga oo isku daraya koodka iyo ku tiirsanaanta. Weelasha waxaa had iyo jeer laga abuuraa sawirro, iyadoo lagu darayo lakab sare oo la qori karo oo bilaabaya qiyaaso kala duwan. Sababtoo ah weelku wuxuu leeyahay lakab qoraal ah oo dhammaan isbeddellada lagu kaydiyo lakabkaas, weelasha badan ayaa wadaagi kara marin u helka isla sawirka sare.

Weel kasta waxa lagu habayn karaa iyada oo loo marayo fayl ku jira mashruuca docker-compose oo ku jira xalka ugu weyn, docker-compose.yml. Halkaa waxaad ku dejin kartaa cabbirro kala duwan sida magaca weelka, dekedaha, aqoonsiyaasha, xadka kheyraadka, ku tiirsanaanta weelasha kale. Haddii aadan ku qeexin magaca weelka ee goobaha, markaas Docker wuxuu abuuri doonaa weel cusub mar kasta, isagoo magac u siinaya si aan kala sooc lahayn.

Marka weel laga bilaabo sawirka, Docker wuxuu ku dul shubaa nidaamka faylalka wax-akhrinta/qorista ee dusha sare ee lakab kasta oo hoose. Tani waa meesha dhammaan hababka aan rabno in weelkeena Docker uu socdo ay socon doonaan.

Marka Docker uu bilaabo weelka, lakabka hore ee wax-akhriska/qorista waa faaruq. Marka isbedelku dhaco, waxaa lagu dabaqaa lakabkaas; tusaale ahaan, haddii aad rabto inaad wax ka beddesho faylka, faylkaas waxa laga soo minguurin doonaa lakabka akhris-kaliya ee hoose ilaa lakabka wax-akhriska.
Nooca akhriska-kaliya ee faylka ayaa wali jiri doona, laakiin hadda waxa uu ku qarsoon yahay nuqulka hoostiisa. Mugyada waxa loo isticmaalaa in lagu kaydiyo xogta, iyada oo aan loo eegin meertada nolosha weelka. Cadadka waxaa la bilaabaa marka weel la sameeyo.

Sidee buu sawirka ula xidhiidha weelka?

Sawir - element ugu weyn ee weel kasta. Sawirka waxaa laga sameeyay Dockerfile oo lagu daray mashruuca waana nidaam faylal ah (lakabyo) oo is dulsaaran oo la isku daray, diyaar u ah akhrinta kaliya; tirada ugu badan ee lakabyada waa 127.

Wadnaha sawir kasta waxaa ku yaal sawirka salka, kaas oo lagu qeexay amarka FROM - meesha laga soo galo marka la abuurayo sawirka Dockerfile. Lakab kastaa waa lakab wax-akhris oo keliya ah waxaana u taagan hal amar oo wax ka beddelaya nidaamka faylka, oo ku qoran Dockerfile.
Si loogu daro lakabyadan hal sawir, Docker wuxuu isticmaalaa nidaamka faylalka midawga badan ee lakabyada sare leh (AuFS waxa lagu dhisay dusha sare ee UnionFS), taas oo u oggolaanaysa faylal iyo hagayaal kala duwan oo lakabyo faylal ah si ay si hufan isugu dhuftaan, abuuraan nidaam faylal la xidhiidha.

Lakabyadu waxay ka kooban yihiin xog badan oo kuu ogolaanaya inaad kaydiso macluumaadka la xidhiidha lakab kasta wakhtiga runtime iyo dhisitaanka wakhtiga. Lakab kastaa wuxuu ka kooban yahay isku xirka lakabka xiga, haddii lakabka uusan lahayn xiriir, markaa kani waa lakabka ugu sarreeya ee sawirka.

Dockerfile waxa ku jiri kara amarada sida:

  • FROM - barta gelitaanka ee samaynta sawirka;
  • ILAALINTA - magaca milkiilaha sawirka;
  • RUN - fulinta amarka inta lagu jiro kulanka sawirka;
  • ADD - koobiyaynta faylka martida loo yahay sawir cusub, haddii aad sheegto faylka URL, Docker wuxuu u soo dejin doonaa tusaha la cayimay;
  • ENV - doorsoomayaasha deegaanka;
  • CMD - wuxuu bilaabaa abuurista weel cusub oo ku salaysan sawirka;
  • ENTRYPOINT - Amarka waxaa la fuliyaa marka weelka la bilaabo.
  • WORKDIR waa hagaha shaqada ee fulinta amarka CMD.
  • USER - Waxa uu UID u dejiyaa weelka laga sameeyay sawirka.
  • VOLUME - Wuxuu ku dhejiyaa tusaha martida loo yahay weelka.
  • EXPOSE waa dekedo laga dhegeysto konteenarka.

Sidee u shaqeysaa UnionFS?

MidowgaFS - Nidaamka faylka adeegga (FS) ee Linux iyo FreeBSD. FS-dani waxay fulisaa habka nuqul-ku-qorista (Koobi-ku-qor, COW). Unugga shaqada ee UnionFS waa lakab, lakab kasta waa in loo tixgaliyaa sidii nidaam faylal buuxa oo gooni ah oo leh kala sareyn hagaha xididka laftiisa. UnionFS waxay u abuurtaa ururinta nidaamka faylalka kale waxayna kuu ogolaanaysaa inaad si hufan ugu milmaan faylalka iyo hagayaasha nidaamyada faylalka kala duwan (loo yaqaan laamo) una geliso hal nidaam faylal oo isku xidhan, si daah-furan isticmaalaha.

Nuxurka hagayaasha leh dariiqyo isku mid ah ayaa lagu soo bandhigi doonaa si wada jir ah hal hage oo la isku daray (oo ku yaal meel isku mid ah) ee nidaamka faylka natiijada.

UnionFS waxay isku daraysaa lakabyo ku salaysan mabaadi'da soo socota:

  • mid ka mid ah lakabyada ayaa noqda lakabka ugu sarreeya, lakabyada labaad iyo kuwa xiga waxay noqdaan lakabyo hoose;
  • walxaha lakabka ah waa ay heli karaan isticmaalaha "laga bilaabo kor ilaa hoos", i.e. haddii shayga la codsaday uu ku jiro lakabka "sare", waa la soo celiyaa, iyada oo aan loo eegin joogitaanka shay isku magac ah oo ku yaal lakabka "hoose"; haddii kale, shayga lakabka "hoose" waa la soo celiyaa; haddii shayga la codsaday uusan jirin ama halkaas, qaladka "Ma jiro faylkaas ama tusaha" waa la soo celinayaa;
  • lakabka shaqadu waa mid ka mid ah "sare", taas oo ah, dhammaan ficillada isticmaalaha si ay u beddelaan xogta waxay ka muuqdaan kaliya lakabka sare, iyada oo aan saameyn ku yeelanin waxyaabaha ku jira lakabyada hoose.

Docker waa tignoolajiyada ugu caansan ee loo isticmaalo weelasha shaqada codsiga. Waxay noqotay halbeegga aaggan, iyadoo lagu dhisayo kooxaha iyo meelaha magacyada ee ay bixiso Linux kernel.

Docker wuxuu noo ogolaanayaa inaan si deg deg ah u dirno codsiyada oo aan ka dhigno sida ugu wanaagsan ee nidaamka faylka annagoo la wadaagno kernel-ka OS inta u dhaxaysa dhammaan weelasha, u shaqeeya sidii nidaam OS gaar ah.

Source: www.habr.com

Add a comment