Ir divas galvenās teh­no­lo­ģi­jas lie­to­jum­prog­ram­mu iz­vie­to­ša­nai – Docker un virtuālās mašīnas (VM). Abas nodrošina iespējas izolēt lie­to­jum­prog­ram­mas un resursus, bet atšķiras savā pieejā un lietojumā. Šajā rakstā sniegsim pārskatu par to, kas Docker un vir­tuā­la­jām mašīnām ir kopīgs, kā tās atšķiras, kādas ir katras priekš­ro­cī­bas un trūkumi un kādās jomās tās tiek iz­man­to­tas.

Kas ir Docker?

Docker ir vir­tua­li­zā­ci­jas ri­si­nā­jums, kas ļauj iepakot un izpildīt lie­to­jum­prog­ram­mas un to atkarības kon­tei­ne­ros. Docker kon­tei­ners ir izolēta vide, kas satur visas lie­to­jum­prog­ram­mas sa­stāv­da­ļas, tostarp ope­rē­tājsis­tē­mu, izpildes vidi, bib­lio­tē­kas un kon­fi­gu­rā­ci­jas. Kon­tei­ners var tikt izpildīts jebkurā sistēmā ar Docker, ne­at­ka­rī­gi no at­šķi­rī­bām pa­ma­tin­fras­truk­tū­rā. Dažas no Docker priekš­ro­cī­bām ir ātra lie­to­jum­prog­ram­mu iz­vie­to­ša­na, vienkārša mē­ro­go­ša­na un mazāks resursu patēriņš nekā citām vir­tua­li­zā­ci­jas teh­no­lo­ģi­jām, piemēram, vir­tuā­la­jām mašīnām.

Kas ir virtuālā mašīna (VM)?

Virtuālās mašīnas (VM) ir vēl viens veids, kā vir­tua­li­zēt lie­to­jum­prog­ram­mas. VM ir fizisko datoru platformu prog­ram­ma­tū­ras emu­lā­ci­jas, kas ļauj vienā fiziskā serverī darbināt vairākas ope­rē­tājsis­tē­mas un lie­to­jum­prog­ram­mas. Tās tiek iz­man­to­tas dažādiem mērķiem, tostarp:

  • Serveru kon­so­li­dā­ci­ja: uzņēmumi var kon­so­li­dēt vairākus serverus vienā fiziskā hostā, lai efektīvi izmantotu aparatūru un sa­ma­zi­nā­tu izmaksas.
  • Izstrāde: iz­strā­dā­tā­ji var izmantot virtuālās mašīnas, lai simulētu dažādas ope­rē­tājsis­tē­mas un izstrādes vidi, lai iz­strā­dā­tu un testētu lietotnes. Lietotņu izolēšana: virtuālās mašīnas ļauj izpildīt lietotnes un to atkarības izolētā vidē, kas palielina drošību un samazina konfliktu risku starp lietotnēm. Drošība: virtuālās mašīnas bieži izmanto, lai simulētu dažādus uzbrukuma sce­nā­ri­jus un testētu drošības kon­cep­ci­jas.

Kas kopīgs Docker un vir­tuā­la­jām mašīnām?

Docker un virtuālās mašīnas izmanto fun­da­men­tā­li at­šķi­rī­gas pieejas, taču tām ir arī vairākas kopīgas iezīmes, jo īpaši pār­ne­sa­mī­bas, attēlu un versiju pār­val­dī­bas jomā.

Pār­ne­sa­mī­ba

Gan Docker, gan virtuālās mašīnas ir ļoti pār­ne­sa­mas un ļauj vienkārši izpildīt lie­to­jum­prog­ram­mas un to atkarības dažādās sistēmās un plat­for­mās. Docker kon­tei­ne­rus var izpildīt jebkurā sistēmā, kurā ir Docker. Tāpat arī virtuālās mašīnas var izvietot dažādās hi­per­vī­zēs un mā­koņplat­for­mās, ja vien šī vide atbalsta attiecīgo vir­tua­li­zā­ci­jas teh­no­lo­ģi­ju.

Attēli

Vēl viena līdzība starp Docker un vir­tuā­la­jām mašīnām ir to attēlu kon­cep­ci­ja. VM un Docker attēli kalpo kā veidnes, kas apraksta lie­to­jum­prog­ram­mas vai ope­rē­tājsis­tē­mas stāvokli un kon­fi­gu­rā­ci­ju. Abos gadījumos attēlus var versijot un pārvaldīt, lai izsekotu un uzturētu dažādas lie­to­jum­prog­ram­mas vai ope­rē­tājsis­tē­mas versijas. Tas ļauj iz­strā­dā­tā­jiem no­dro­ši­nāt kon­sek­ven­tu un rep­ro­du­cē­ja­mu ieviešanu un sis­te­mā­tis­ki izsekot izmaiņām, kas veiktas lie­to­jum­prog­ram­mās un sistēmas kon­fi­gu­rā­ci­jās. Attēlu iz­man­to­ša­na arī vienkāršo sadarbību starp izstrādi, testēšanu un ražošanu, jo iz­strā­dā­tā­ji un darbības komandas var izmantot tos pašus attēlus, lai no­dro­ši­nā­tu, ka lie­to­jum­prog­ram­mas tiek vienoti iz­vie­to­tas dažādās vidēs.

Versiju pār­val­dī­ba

Gan Docker, gan virtuālās mašīnas atbalsta attēlu versiju pār­val­dī­bu, kas vienkāršo izstrādes procesu un nodrošina lietotņu kon­sek­ven­tu ieviešanu. Versiju pār­val­dī­ba ļauj iz­strā­dā­tā­jiem izsekot un atcelt izmaiņas attēlos, no­dro­ši­not lietotņu sta­bi­li­tā­ti un uz­ti­ca­mī­bu.

Kādas ir at­šķi­rī­bas starp Docker un vir­tuā­la­jām mašīnām?

Lai gan Docker un virtuālās mašīnas tiek iz­man­to­tas, lai darbinātu lietotnes dažādās vidēs, tās izmanto at­šķi­rī­gas pieejas. Tur­pi­nā­ju­mā iz­klās­tī­tas dažas no gal­ve­na­jām at­šķi­rī­bām.

Mērķi

Docker galvenais mērķis ir izvietot lietotnes un pa­kal­po­ju­mus kon­tei­ne­ros, kas nodrošina izolētu, pārnesamu vidi. Docker kon­cen­trē­jas uz lietotņu efek­ti­vi­tā­tes un mē­ro­go­ja­mī­bas uz­la­bo­ša­nu, kā arī to iz­vie­to­ša­nas vien­kār­šo­ša­nu.

Turpretim virtuālās mašīnas nodrošina pilnīgu vir­tua­li­zā­ci­jas vidi, kurā vienā uzņēmējā var darboties vairākas ope­rē­tājsis­tē­mas. To galvenais mērķis ir ļaut lie­to­tā­jiem izveidot izolētu virtuālo vidi, kas ir ne­at­ka­rī­ga no pamatā esošās ap­ara­tū­ras.

Ar­hi­tek­tū­ra

Docker kon­tei­ne­ri dala resursus ar uzņēmējas ope­rē­tājsis­tē­mu un tās kodolu. Tas nozīmē, ka tiem ir mazākas pa­pil­diz­mak­sas un ātrāks uz­sāk­ša­nas laiks nekā vir­tuā­la­jām mašīnām.

Virtuālās mašīnas emulē pilnīgu ap­ara­tū­ras vidi un tām ir sava ope­rē­tājsis­tē­mas instance, kas ir ne­at­ka­rī­ga no uz­ņē­mē­jo­pe­rē­tājsis­tē­mas un citām vir­tuā­la­jām mašīnām. Tas nodrošina lielāku izolāciju, bet prasa vairāk resursu un ir ilgāks uz­sāk­ša­nas laiks nekā kon­tei­ne­ros.

Drošība

Docker kon­tei­ne­ri dala kodolu ar uzņēmējas ope­rē­tājsis­tē­mu, kas var radīt drošības riskus. Kon­tei­ne­ra attēls, kas satur kļūdas vai ļaunprog­ram­ma­tū­ras, var ietekmēt visu uzņēmēju.

Turpretim VM darbojas uz savas ope­rē­tājsis­tē­mas, kas nozīmē, ka tās ir vairāk izolētas. Tas nodrošina augstāku drošības līmeni, jo uzbrukumi VM parasti ietekmē tikai šo VM.

Resursi

Docker kon­tei­ne­ri dala resursus ar uzņēmējas ope­rē­tājsis­tē­mu, kas nodrošina efek­tī­vā­ku ap­ara­tū­ras iz­man­to­ša­nu. Tomēr var būt grūti izolēt resursu ie­til­pī­gas darba slodzes.

Katrai VM ir savi resursi, kas ir pilnībā izolēti no citām VM. Tas nodrošina precīzāku resursu pār­val­dī­bu un darba slodzes izolāciju.

Veikt­spē­ja

Docker kon­tei­ne­ri parasti nodrošina labāku veikt­spē­ju un īsāku uz­sāk­ša­nas laiku nekā VM.

Sakarā ar pilnīgu vir­tua­li­zā­ci­jas vidi VM ir lielākas pa­pil­diz­mak­sas un ilgāks uz­sāk­ša­nas laiks. Tomēr tās ir pie­mē­ro­tā­kas resursu ie­til­pī­giem darba uz­de­vu­miem, kam ne­pie­cie­ša­ma stabila izolācija.

Pār­ne­sa­mī­ba

Docker kon­tei­ne­rus var viegli pārvietot starp dažādām vidēm, ja vien mērķa darbvirsmā ir instalēts Docker.

VM attēli ir mazāk pārnesami, jo tie satur visu ope­rē­tājsis­tē­mu, nevis tikai vienu lietotni. VM pār­vie­to­ša­na starp dažādiem hi­per­vī­zo­riem parasti prasa kon­ver­tē­ša­nu.

Kādas ir Docker priekš­ro­cī­bas sa­lī­dzi­nā­ju­mā ar vir­tuā­la­jām mašīnām?

Ņemot vērā iepriekš minētās at­šķi­rī­bas, Docker un virtuālās mašīnas katra piedāvā savas priekš­ro­cī­bas un ir pie­mē­ro­tas dažādiem lie­to­ša­nas ga­dī­ju­miem.

Docker priekš­ro­cī­bas

  • Vieglas kon­tei­ners: Docker kon­tei­ne­ri izmanto mazāk resursu nekā VM. Tie ļauj ātri izvietot lietotnes un efektīvi izmantot resursus.
  • Pār­ne­sa­mī­ba: Docker kon­tei­ne­ri ir pārnesami un tos var izpildīt dažādās sistēmās un mā­koņplat­for­mās, ja vien vide atbalsta Docker. Tas atvieglo lietotņu iz­vie­to­ša­nu un mē­ro­go­ša­nu dažādās vidēs.
  • Ātra iz­vie­to­ša­na: Docker ļauj ātri izvietot lietotnes, iz­man­to­jot kon­tei­ne­ru teh­no­lo­ģi­ju. Iz­strā­dā­tā­ji var ātri izveidot, sākt un apturēt kon­tei­ne­rus, kas paātrina izstrādi un iz­vie­to­ša­nu.
  • Vienkārša koor­di­nā­ci­ja: Docker rīki, piemēram, Docker Swarm un Ku­ber­ne­tes, atvieglo kon­tei­ne­ru koor­di­nā­ci­ju. Tie ļauj sadalīt kon­tei­ne­rus starp vairākiem hostiem, au­to­ma­ti­zēt mē­ro­go­ša­nu un no­dro­ši­nāt uz­ti­ca­mī­bu.
  • Mikro pa­kal­po­ju­mu ar­hi­tek­tū­ra: Docker ir piemērots mikro pa­kal­po­ju­mu ar­hi­tek­tū­ru īs­te­no­ša­nai, jo tas ļauj izolēt un ieviest at­se­viš­ķus pa­kal­po­ju­mus kon­tei­ne­ros. Tas uzlabo lietotņu mē­ro­go­ja­mī­bu, uz­tu­rē­ša­nu un elas­tī­gu­mu.

Virtuālo mašīnu priekš­ro­cī­bas

  • Pa­lie­li­nā­ta izolācija: virtuālās mašīnas nodrošina lielāku izolāciju starp at­se­viš­ķām VM, jo katrai VM ir sava ope­rē­tājsis­tē­ma un resursi. Tas palielina drošību un samazina uzbrukumu un datu noplūdes risku.
  • Pilnīga vir­tua­li­zā­ci­ja: VM ļauj vienā fiziskajā hostā darbināt dažādas ope­rē­tājsis­tē­mas, kas palielina dažādu ope­rē­tājsis­tē­mu un lietotņu sa­vie­to­ja­mī­bu.
  • Legacy lietotnes: VM var izmantot, lai darbinātu legacy lietotnes, kurām ne­pie­cie­ša­ma spe­ci­fis­ka ope­rē­tājsis­tē­mas vide. Tās ļauj darbināt vecas lietotnes uz pa­šrei­zē­jām ap­ara­tū­ras plat­for­mām, ne­ie­tek­mē­jot vides sta­bi­li­tā­ti.
  • Precīza resursu pār­val­dī­ba: VM nodrošina precīzāku resursu pār­val­dī­bu, jo katrai VM ir savi resursi, kurus var pārvaldīt atsevišķi. Tas ļauj precīzāk kontrolēt resursu sadali un iz­man­to­ša­nu.
  • Drošībai kritiskas lietotnes: VM ir labi pie­mē­ro­tas drošībai kritisku lietotņu izpildei, kurām ne­pie­cie­ša­ma augsta iz­olā­ci­jas un drošības pakāpe. Ope­rē­tājsis­tē­mu un resursu no­šķir­ša­na samazina drošības riskus.

Kura ir piemērota jūsu projektam? Docker vai virtuālās mašīnas?

Lēmums par Docker vai virtuālo mašīnu iz­man­to­ša­nu ir atkarīgs no vairākiem faktoriem, tostarp lietotnes veida, drošības prasībām un ne­pie­cie­ša­mās elastības pakāpes. Tāpēc ir svarīgi izsvērt katras iepriekš minētās teh­no­lo­ģi­jas priekš­ro­cī­bas un iz­vē­lē­ties to, kas vislabāk atbilst jūsu projekta va­ja­dzī­bām.

Docker ir īpaši piemērots lietotnēm ar:

  • īsi iz­vie­to­ša­nas cikli
  • ie­ro­be­žo­tas resursu va­ja­dzī­bas mik­ro­ser­vi­su ar­hi­tek­tū­rai
  • ātra mē­ro­go­ja­mī­ba
  • fiziskā in­fras­truk­tū­ra, kas ir iz­klie­dē­ta

VM ir pie­mē­ro­tas:

  • ope­rē­tājsis­tē­mas ar vienu fizisko in­fras­truk­tū­ru
  • ope­rē­tājsis­tē­mu uz­stā­dī­ša­na ar dažādiem vadības ele­men­tiem
  • ope­rē­tājsis­tē­mas ar spe­ci­fis­kām atkarībām
  • īpašas prasības ap­ara­tū­ras resursiem
  • vecās lie­to­jum­prog­ram­mas, kas ne­dar­bo­jas uz modernām ope­rē­tājsis­tē­mām
Go to Main Menu