Yra dvi pag­rin­di­nės tech­no­lo­gi­jos, skirtos programų diegimui – „Docker“ ir vir­tu­a­lios mašinos (VM). Abos tech­no­lo­gi­jos suteikia galimybes izoliuoti programas ir išteklius, tačiau skiriasi savo požiūriu ir taikymo sritimis. Šiame straips­ny­je pa­teik­si­me bendrą apžvalgą apie tai, kas yra bendra „Docker“ ir vir­tu­a­lioms mašinoms, kuo jos skiriasi, kokie yra kiek­vie­nos iš jų pri­va­lu­mai ir trūkumai bei kokiose srityse jos nau­do­ja­mos.

Kas yra „Docker“?

„Docker“ yra vir­tu­ali­za­ci­jos spren­di­mas, lei­džian­tis pakuoti ir vykdyti programas bei jų pri­klau­so­my­bes kon­t­ei­ne­riuo­se. „Docker“ kon­t­ei­ne­ris yra izoliuota aplinka, kurioje yra visi programos kom­po­nen­tai, įskaitant operacinę sistemą, vykdymo aplinką, bi­b­lio­te­kas ir kon­fi­gū­ra­ci­jas. Kon­t­ei­ne­ris gali būti vykdomas bet kurioje sistemoje su „Docker“, ne­pri­klau­so­mai nuo pag­rin­di­nės inf­rastruk­tū­ros skirtumų. Kai kurie „Docker“ pri­va­lu­mai yra greitas programų diegimas, paprastas mastelio keitimas ir mažesnis išteklių nau­do­ji­mas nei kitų vir­tu­ali­za­ci­jos tech­no­lo­gi­jų, pvz., virtualių mašinų.

Kas yra vir­tu­a­lio­ji mašina (VM)?

Vir­tu­a­lios mašinos (VM) yra dar vienas būdas vir­tu­ali­zuo­ti programas. VM yra fizinių kom­piu­te­ri­nių platformų prog­ra­mi­nės įrangos emu­lia­ci­jos, kurios leidžia viename fiziniame serveryje paleisti kelias ope­ra­ci­nes sistemas ir programas. Jos nau­do­ja­mos įvairiais tikslais, įskaitant:

  • Serverių kon­so­li­da­vi­mas: įmonės gali kon­so­li­duo­ti kelis serverius viename fiziniame serveryje, kad efek­ty­viai naudotų aparatinę įrangą ir sumažintų išlaidas.
  • Kūrimas: kūrėjai gali naudoti vir­tu­alias mašinas, kad imituotų skir­tin­gas ope­ra­ci­nes sistemas ir kūrimo aplinkas, siekdami kurti ir testuoti programas. Programų izo­lia­vi­mas: vir­tu­a­lios mašinos leidžia vykdyti programas ir jų pri­klau­so­my­bes izo­liuo­to­se aplinkose, o tai padidina saugumą ir sumažina programų konflikto riziką. Saugumas: vir­tu­a­lios mašinos dažnai nau­do­ja­mos skir­tin­giems atakų sce­na­ri­jams imituoti ir saugumo kon­cep­ci­joms testuoti.

Ką bendro turi „Docker“ ir vir­tu­a­lios mašinos?

„Docker“ ir vir­tu­a­lios mašinos naudoja iš esmės skir­tin­gus metodus, tačiau turi nemažai bendrų bruožų, ypač per­ke­lia­mu­mo, vaizdų ir versijų valdymo srityse.

Per­ke­lia­mu­mas

Tiek „Docker“, tiek vir­tu­a­lios mašinos yra itin lengvai per­ke­lia­mos ir leidžia sklan­džiai vykdyti programas bei jų pri­klau­so­my­bes skir­tin­go­se sistemose ir plat­for­mo­se. „Docker“ kon­t­ei­ne­rius galima paleisti bet kurioje sistemoje, kurioje yra „Docker“. Panašiai, vir­tu­alias mašinas galima diegti skir­tin­guo­se hi­per­vi­zo­riuo­se ir debesų plat­for­mo­se, jei ta aplinka palaiko ati­tin­ka­mą vir­tu­ali­za­ci­jos tech­no­lo­gi­ją.

Vaizdai

Kitas Docker ir virtualių mašinų panašumas yra jų vaizdų kon­cep­ci­ja. VM ir Docker vaizdai veikia kaip šablonai, api­bū­di­nan­tys programos ar ope­ra­ci­nės sistemos būseną ir kon­fi­gū­ra­ci­ją. Abiem atvejais vaizdai gali būti ver­si­juo­ja­mi ir valdomi, kad būtų galima stebėti ir pri­žiū­rė­ti skir­tin­gas programos ar ope­ra­ci­nės sistemos versijas. Tai leidžia kūrėjams už­tik­rin­ti nuo­sek­lius ir at­ku­ria­mus diegimus bei sis­te­min­gai stebėti programų ir sistemos kon­fi­gū­ra­ci­jų pa­kei­ti­mus. Vaizdų nau­do­ji­mas taip pat su­pa­pras­ti­na bend­ra­dar­bia­vi­mą tarp kūrimo, testavimo ir gamybos, nes kūrėjai ir operacijų komandos gali naudoti tuos pačius vaizdus, kad už­tik­rin­tų nuoseklų programų diegimą skir­tin­go­se aplinkose.

Versijų valdymas

Tiek „Docker“, tiek vir­tu­a­lios mašinos palaiko vaizdų versijų valdymą, kuris su­pa­pras­ti­na kūrimo procesą ir užtikrina nuoseklų programų diegimą. Versijų valdymas leidžia kūrėjams stebėti ir atšaukti vaizdų pa­kei­ti­mus, už­tik­ri­nant programų stabilumą ir pa­ti­ki­mu­mą.

Kuo skiriasi „Docker“ ir vir­tu­a­lios mašinos?

Nors „Docker“ ir vir­tu­a­lios mašinos nau­do­ja­mos prog­ra­moms paleisti įvairiose aplinkose, jos tai daro skir­tin­gais būdais. Toliau pa­tei­kia­me keletą pag­rin­di­nių skirtumų.

Tikslai

Pag­rin­di­nis „Docker“ tikslas – diegti programas ir paslaugas kon­t­ei­ne­riuo­se, kurie užtikrina izoliuotą, per­ke­lia­mą aplinką. „Docker“ siekia didinti programų efek­ty­vu­mą ir mastelį bei su­pa­pras­tin­ti jų diegimą.

Prie­šin­gai, vir­tu­a­lios mašinos suteikia visiškai vir­tu­ali­zuo­tą aplinką, kurioje viename serveryje galima vykdyti kelias ope­ra­ci­nes sistemas. Jos skirtos tam, kad var­to­to­jai galėtų sukurti izoliuotą virtualią aplinką, ne­pri­klau­so­mą nuo pag­rin­di­nės apa­ra­ti­nės įrangos.

Ar­chi­tek­tū­ra

„Docker“ kon­t­ei­ne­riams ištekliai bendrai naudojami su pag­rin­di­ne operacine sistema ir jos bran­duo­liu. Tai reiškia, kad jie turi mažiau papildomų išlaidų ir greičiau pa­lei­džia­mi nei vir­tu­a­lios mašinos.

Virtuali mašina imituoja visą aparatinę aplinką ir turi savo ope­ra­ci­nės sistemos instancą, kuri yra ne­pri­klau­so­ma nuo pag­rin­di­nės ope­ra­ci­nės sistemos ir kitų virtualių mašinų. Tai užtikrina didesnį izo­lia­vi­mą, tačiau rei­ka­lau­ja daugiau išteklių ir užtrunka ilgiau paleisti nei kon­t­ei­ne­riai.

Saugumas

„Docker“ kon­t­ei­ne­riams nau­do­ja­mas tas pats bran­duo­lys kaip ir pag­rin­di­nei ope­ra­ci­nei sistemai, o tai gali kelti saugumo riziką. Kon­t­ei­ne­rių atvaizdas, kuriame yra klaidų ar ken­kė­jiš­kų programų, gali turėti įtakos visai pag­rin­di­nei sistemai.

Prie­šin­gai, VM veikia savo ope­ra­ci­nė­je sistemoje, todėl yra labiau izo­liuo­tos. Tai užtikrina aukštesnį saugumo lygį, nes atakos prieš VM paprastai paveikia tik tą VM.

Ištekliai

„Docker“ kon­t­ei­ne­riams ištekliai bendrai naudojami su pag­rin­di­ne operacine sistema, todėl už­tik­ri­na­mas efek­ty­ves­nis apa­ra­ti­nės įrangos nau­do­ji­mas. Tačiau gali būti sunku izoliuoti daug išteklių rei­ka­lau­jan­čius darbo krūvius.

Kiekviena VM turi savo išteklius, kurie yra visiškai izoliuoti nuo kitų VM. Tai leidžia tiksliau valdyti išteklius ir izoliuoti darbo krūvius.

Našumas

Docker kon­t­ei­ne­rių našumas paprastai yra didesnis, o paleidimo laikas trum­pes­nis nei VM.

Dėl visiškai vir­tu­ali­zuo­tų aplinkų VM turi daugiau papildomų išlaidų ir ilgesnį paleidimo laiką. Tačiau jos yra geresnės išteklių in­ten­sy­viems darbo krūviams, kuriems rei­ka­lin­ga patikima izo­lia­ci­ja.

Per­ke­lia­mu­mas

Docker kon­t­ei­ne­rius galima lengvai perkelti iš vienos aplinkos į kitą, jei tik tikslinis kom­piu­te­ris turi Docker.

VM atvaizdai yra mažiau per­ke­lia­mai, nes juose yra visa operacinė sistema, o ne tik viena programa. Perkelti VM tarp skirtingų hi­per­vi­zo­rių paprastai reikia kon­ver­tuo­ti.

Kokie yra „Docker“ pri­va­lu­mai, palyginti su vir­tu­a­lio­sio­mis mašinomis?

Dėl aukščiau išvardytų skirtumų „Docker“ ir vir­tu­a­lios mašinos turi skirtingų privalumų ir tinka skir­tin­giems naudojimo atvejams.

Docker pri­va­lu­mai

  • Lengvi kon­t­ei­ne­riai: „Docker“ kon­t­ei­ne­riai naudoja mažiau išteklių nei VM. Jie leidžia greitai diegti programas ir efek­ty­viai naudoti išteklius.
  • Per­ke­lia­mu­mas: „Docker“ kon­t­ei­ne­riai yra per­ke­lia­mie­ji ir gali būti vykdomi skir­tin­go­se sistemose ir debesų plat­for­mo­se, jei aplinka palaiko „Docker“. Tai pa­leng­vi­na programų diegimą ir mastelio keitimą skir­tin­go­se aplinkose.
  • Greitas diegimas: „Docker“ leidžia greitai diegti programas naudojant kon­t­ei­ne­rių tech­no­lo­gi­ją. Kūrėjai gali greitai kurti, paleisti ir su­stab­dy­ti kon­t­ei­ne­rius, o tai pa­grei­ti­na kūrimą ir diegimą.
  • Paprastas ko­or­di­na­vi­mas: „Docker“ įrankiai, tokie kaip „Docker Swarm“ ir „Ku­ber­ne­tes“, pa­leng­vi­na kon­t­ei­ne­rių ko­or­di­na­vi­mą. Jie leidžia pa­skirs­ty­ti kon­t­ei­ne­rius tarp kelių šei­mi­nin­kų, au­to­ma­ti­zuo­ti mastelio keitimą ir už­tik­rin­ti pa­ti­ki­mu­mą.
  • Mikro paslaugų ar­chi­tek­tū­ra: „Docker“ tinka mikro paslaugų ar­chi­tek­tū­rų įgy­ven­di­ni­mui, nes leidžia izoliuoti ir diegti atskiras paslaugas kon­t­ei­ne­riuo­se. Tai pagerina programų mastelį, priežiūrą ir lankstumą.

Vir­tu­alių­jų mašinų pri­va­lu­mai

  • Didesnė izo­lia­ci­ja: vir­tu­a­lios mašinos užtikrina didesnę atskirų VM izo­lia­ci­ją, nes kiekviena VM turi savo operacinę sistemą ir išteklius. Tai padidina saugumą ir sumažina atakų bei duomenų nu­te­kė­ji­mo riziką.
  • Visiška vir­tu­ali­za­ci­ja: VM leidžia naudoti skir­tin­gas ope­ra­ci­nes sistemas tame pačiame fiziniame serveryje, o tai padidina skirtingų ope­ra­ci­nių sistemų ir programų su­de­ri­na­mu­mą.
  • Senosios programos: VM gali būti nau­do­ja­mos senosioms prog­ra­moms, kurioms rei­ka­lin­ga speciali ope­ra­ci­nės sistemos aplinka, paleisti. Jos leidžia paleisti senas programas da­bar­ti­nė­se apa­ra­ti­nės įrangos plat­for­mo­se, ne­pa­vei­kiant aplinkos stabilumo.
  • Tikslus išteklių valdymas: VM leidžia tiksliau valdyti išteklius, nes kiekviena VM turi savo išteklius, kuriuos galima valdyti atskirai. Tai leidžia tiksliau kont­ro­liuo­ti išteklių pa­skirs­ty­mą ir naudojimą.
  • Saugai svarbios programos: VM puikiai tinka saugai svarbių programų, kurioms rei­ka­lin­gas aukštas izo­lia­ci­jos ir saugumo lygis, veikimui. Ope­ra­ci­nių sistemų ir išteklių at­sky­ri­mas sumažina saugumo riziką.

Kas tinka jūsų projektui? Docker vs vir­tu­a­lios mašinos

Spren­di­mas rinktis „Docker“ ar vir­tu­alias mašinas priklauso nuo kelių veiksnių, įskaitant programos tipą, saugumo rei­ka­la­vi­mus ir rei­ka­lin­gą lankstumą. Todėl svarbu įvertinti kiek­vie­nos iš minėtų tech­no­lo­gi­jų pri­va­lu­mus ir pa­si­rink­ti tą, kuri ge­riau­siai atitinka jūsų projekto poreikius.

„Docker“ ypač tinka prog­ra­moms, tu­rin­čioms:

  • trumpi diegimo ciklai
  • riboti išteklių poreikiai mikro paslaugų ar­chi­tek­tū­rai
  • greitas mastelio keitimas
  • iš­sklai­dy­ta fizinė inf­rastruk­tū­ra

VM yra puikiai tinka:

  • ope­ra­ci­nės sistemos su vienu fiziniu inf­rastruk­tū­ros elementu
  • ope­ra­ci­nių sistemų su skir­tin­gais valdymo ele­men­tais nu­sta­ty­mas
  • ope­ra­ci­nių sistemų su konk­re­čio­mis pri­klau­so­my­bė­mis
  • specialūs rei­ka­la­vi­mai apa­ra­ti­nės įrangos iš­tek­liams
  • senosios programos, kurios neveikia šiuo­lai­ki­nė­se ope­ra­ci­nė­se sistemose
Go to Main Menu