Ra­ken­duste ka­su­tuse­le­võ­tuks on kaks peamist teh­no­loo­giat – Docker ja vir­tuaal­ma­si­nad (VM). Mõlemad pakuvad võimalusi ra­ken­duste ja res­surs­side iso­lee­ri­miseks, kuid erinevad oma lä­he­ne­mis­viisi ja ra­ken­duste poolest. Käes­ole­vas artiklis anname ülevaate Docker ja vir­tuaal­ma­si­nate ühis­joon­test, eri­ne­vus­test, nende eelistest ja puu­dus­test ning ka­su­tus­vald­kon­da­dest.

Mis on Docker?

Docker on vir­tua­li­see­ri­mis­la­hen­dus, mis võimaldab pakendada ja käivitada rakendusi ja nende sõltuvusi kon­tei­ne­ri­tes. Docker-konteiner on iso­lee­ri­tud keskkond, mis sisaldab kõiki rakenduse kom­po­nente, seal­hul­gas ope­rat­sioo­ni­süs­teemi, käi­vi­tus­kesk­konda, raa­ma­tu­ko­gusid ja kon­fi­gu­rat­sioone. Kon­tei­ne­rit saab käivitada mis tahes süsteemis, kus on Docker, sõltumata alu­sinf­ra­struk­tuuri eri­ne­vus­test. Docker’i eelised on ra­ken­duste kiire ka­su­tuse­le­võtt, lihtne ska­lee­ri­mine ja väiksem res­sur­si­ka­su­tus võrreldes teiste vir­tua­li­see­ri­mis­teh­no­loo­gia­tega, nagu vir­tuaal­ma­si­nad.

Mis on vir­tuaal­ma­sin (VM)?

Vir­tuaal­ma­si­nad (VM) on veel üks viis ra­ken­duste vir­tua­li­see­ri­miseks. VM-id on füü­si­liste ar­vu­ti­plat­vormide tark­va­raemu­lat­sioo­nid, mis või­mal­da­vad ühel füü­si­li­sel hostil käitada mitut ope­rat­sioo­ni­süs­teemi ja rakendust. Neid ka­su­ta­takse mit­me­su­gus­tel ees­mär­ki­del, seal­hul­gas:

  • Serverite kon­so­li­dee­ri­mine: et­te­võt­ted saavad kon­so­li­dee­rida mitu serverit ühele füü­si­li­sele hostile, et kasutada riistvara tõhusalt ja vähendada kulusid.
  • Arendus: arendajad saavad kasutada vir­tuaal­ma­si­naid erinevate ope­rat­sioo­ni­süs­teemide ja aren­dus­kesk­kon­dade si­mu­lee­ri­miseks, et arendada ja testida rakendusi. Ra­ken­duste iso­lee­ri­mine: vir­tuaal­ma­si­nad või­mal­da­vad rakendusi ja nende sõltuvusi iso­lee­ri­tud kesk­kon­da­des käivitada, mis suurendab tur­va­li­sust ja vähendab ra­ken­dus­te­va­he­liste konf­lik­tide riski. Tur­va­li­sus: vir­tuaal­ma­si­naid ka­su­ta­takse sageli erinevate rün­na­kust­se­naa­riumide si­mu­lee­ri­miseks ja tur­va­li­suse kont­sept­sioo­nide tes­ti­miseks.

Mis on Dockeril ja vir­tuaal­ma­si­na­tel ühist?

Docker ja vir­tuaal­ma­si­nad kasutavad põ­hi­mõt­te­li­selt erinevaid lä­he­ne­mis­viise, kuid neil on ka mitmeid ühiseid jooni, eriti seoses tei­sal­da­ta­vuse, piltide ja ver­sioo­nide hal­da­mi­sega.

Kaa­sas­kan­ta­vus

Nii Docker kui ka vir­tuaal­ma­si­nad on äärmiselt tei­sal­da­ta­vad ja või­mal­da­vad teil sujuvalt käivitada rakendusi ja nende sõltuvusi eri­ne­va­tel süs­teemi­del ja plat­vormi­del. Docker-kon­tei­ne­reid saab käivitada igal süsteemil, millel on Docker. Samamoodi saab vir­tuaal­ma­si­naid kasutada eri­ne­va­tel hü­per­viisori­tel ja pil­ve­plat­vormi­del, kui see keskkond toetab asjaomast vir­tua­li­see­ri­mis­teh­no­loo­giat.

Pildid

Teine sarnasus Docker ja vir­tuaal­ma­si­nate vahel on nende piltide kont­sept­sioon. VM- ja Docker-pildid toimivad mallidena, mis kir­jel­da­vad rakenduse või ope­rat­sioo­ni­süs­teemi seisundit ja kon­fi­gu­rat­siooni. Mõlemal juhul saab pilte ver­sioo­nida ja hallata, et jälgida ja hooldada rakenduse või ope­rat­sioo­ni­süs­teemi erinevaid versioone. See võimaldab aren­da­ja­tel tagada jär­je­pi­de­vad ja rep­ro­dut­see­ri­ta­vad ra­ken­dused ning süs­te­maa­ti­li­selt jälgida ra­ken­dus­tesse ja süsteemi kon­fi­gu­rat­sioo­ni­desse tehtud muudatusi. Piltide ka­su­ta­mine liht­sus­tab ka arenduse, testimise ja tootmise vahelist koostööd, kuna arendajad ja ope­rat­sioo­ni­mees­kon­nad saavad kasutada samu pilte, et tagada ra­ken­duste jär­je­pi­dev ka­su­tuse­le­võtt eri­ne­va­tes kesk­kon­da­des.

Ver­sioo­ni­hal­dus

Nii Docker kui ka vir­tuaal­ma­si­nad toetavad piltide ver­sioo­ni­hal­dust, mis liht­sus­tab aren­dus­prot­sessi ja tagab ra­ken­duste jär­je­pi­deva ka­su­tuse­le­võtu. Ver­sioo­ni­hal­dus võimaldab aren­da­ja­tel jälgida ja tühistada piltide muudatusi, tagades ra­ken­duste sta­biil­suse ja usal­dus­väär­suse.

Mis on eri­ne­vu­sed Docker ja vir­tuaal­ma­si­nate vahel?

Kuigi Dockerit ja vir­tuaal­ma­si­naid ka­su­ta­takse mõlemat ra­ken­duste käi­ta­miseks eri­ne­va­tes kesk­kon­da­des, on nende lä­he­ne­mis­vii­sid selleks erinevad. Allpool toome välja mõned peamised eri­ne­vu­sed.

Eesmärgid

Dockeri peamine eesmärk on ra­ken­duste ja teenuste ka­su­tuse­le­võtt kon­tei­ne­ri­tes, mis pakuvad iso­lee­ri­tud ja tei­sal­da­ta­vaid keskkondi. Docker keskendub ra­ken­duste tõhususe ja ska­lee­ri­ta­vuse pa­ran­da­misele ning nende ka­su­tuse­le­võtu liht­sus­ta­misele.

Seevastu vir­tuaal­ma­si­nad pakuvad täielikku vir­tua­li­see­ri­mis­kesk­konda, kus ühel hostil saab käivitada mitu ope­rat­sioo­ni­süs­teemi. Nende peamine eesmärk on või­mal­dada ka­su­ta­ja­tel luua iso­lee­ri­tud vir­tuaalne keskkond, mis on sõltumatu aluseks olevast riist­va­rast.

Ar­hi­tek­tuur

Docker-kon­tei­ne­rid jagavad ressursse host-ope­rat­sioo­ni­süs­teemi ja selle tuumaga. See tähendab, et neil on vähem li­sa­ku­lusid ja kiirem käi­vi­tu­mis­aeg kui vir­tuaal­ma­si­na­tel.

Vir­tuaal­ma­si­nad emu­lee­rivad täielikku riist­va­ra­kesk­konda ja neil on oma ope­rat­sioo­ni­süs­teemi instants, mis on sõltumatu host-ope­rat­sioo­ni­süs­tee­mist ja teistest vir­tuaal­ma­si­na­test. See võimaldab suuremat iso­lee­ri­tust, kuid nõuab rohkem ressursse ja selle käi­vi­ta­mine võtab rohkem aega kui kon­tei­ne­ri­tel.

Tur­va­li­sus

Docker-kon­tei­ne­rid jagavad tuuma host-ope­rat­sioo­ni­süs­tee­miga, mis võib tekitada tur­va­riske. Vead või pahavara sisaldav kon­tei­ne­ri­pilt võib mõjutada kogu hosti.

Seevastu vir­tuaal­ma­si­nad töötavad oma ope­rat­sioo­ni­süs­tee­mis, mis tähendab, et nad on rohkem iso­lee­ri­tud. See tagab kõrgemal tasemel tur­va­li­suse, kuna vir­tuaal­ma­si­nale suunatud rünnakud mõjutavad üldjuhul ainult seda vir­tuaal­ma­si­nat.

Ressursid

Docker-kon­tei­ne­rid jagavad ressursse host-ope­rat­sioo­ni­süs­tee­miga, mis tagab riistvara tõhusama ka­su­ta­mise. Siiski võib res­sur­si­ma­hu­kate töö­koor­muste eral­da­mine olla keeruline.

Igal vir­tuaal­ma­si­nal on oma ressursid, mis on teistest vir­tuaal­ma­si­na­test täie­li­kult eraldatud. See võimaldab ressursse täpsemalt hallata ja töö­koor­musi eraldada.

Jõudlus

Docker-kon­tei­ne­rid pakuvad üldiselt paremat jõudlust ja lühemaid käi­vi­tu­mis­ajaid kui vir­tuaal­ma­si­nad.

Tänu täie­li­kule vir­tua­li­see­ri­tud kesk­kon­nale on vir­tuaal­ma­si­na­tel suurem koormus ja pikem käi­vi­tu­mis­aeg. Siiski sobivad need paremini res­sur­si­ma­hu­ka­tele töö­koor­mus­tele, mis nõuavad tugevat iso­lee­ri­tust.

Kaa­sas­kan­ta­vus

Docker-kon­tei­ne­reid saab hõlpsasti ühest kesk­kon­nast teise viia, kui siht­ar­vu­til on Docker.

VM-pildid on vähem tei­sal­da­ta­vad, kuna need si­sal­da­vad kogu ope­rat­sioo­ni­süs­teemi, mitte ainult ühte rakendust. VM-ide tei­sal­da­mine erinevate hü­per­viisorite vahel nõuab ta­va­li­selt kon­ver­tee­ri­mist.

Millised on Docker’i eelised võrreldes vir­tuaal­ma­si­na­tega?

Eespool loetletud eri­ne­vuste tõttu on Dockeril ja vir­tuaal­ma­si­na­tel erinevad eelised ning need sobivad erinevate ka­su­tus­juh­tude jaoks.

Dockeri eelised

  • Kerged kon­tei­ne­rid: Docker-kon­tei­ne­rid kasutavad vähem ressursse kui vir­tuaal­ma­si­nad. Need või­mal­da­vad ra­ken­duste kiiret ka­su­tuse­le­võttu ja res­surs­side tõhusat ka­su­ta­mist.
  • Üle­kan­ta­vus: Docker-kon­tei­ne­rid on üle­kan­ta­vad ja neid saab käivitada eri­ne­va­tes süs­teemi­des ja pil­ve­plat­vormi­del, kui keskkond toetab Dockerit. See liht­sus­tab ra­ken­duste ka­su­tuse­le­võttu ja ska­lee­ri­mist eri­ne­va­tes kesk­kon­da­des.
  • Kiire ka­su­tuse­le­võtt: Docker võimaldab ra­ken­duste kiiret ka­su­tuse­le­võttu kon­tei­ne­ri­teh­no­loo­gia abil. Arendajad saavad kon­tei­ne­rid kiiresti luua, käivitada ja peatada, mis kiirendab aren­da­mist ja ka­su­tuse­le­võttu.
  • Lihtne koor­di­nee­ri­mine: Docker Swarm ja Ku­ber­ne­tes sarnased Docker-töö­riis­tad liht­sus­ta­vad kon­tei­ne­rite koor­di­nee­ri­mist. Need või­mal­da­vad kon­tei­ne­rite jaotamist mitme hosti vahel, au­to­ma­ti­see­rivad ska­lee­ri­mist ja tagavad usal­dus­väär­suse.
  • Mik­ro­tee­nuste ar­hi­tek­tuur: Docker sobib mik­ro­tee­nuste ar­hi­tek­tuu­ride ra­ken­da­miseks, kuna võimaldab üksikute teenuste iso­lee­ri­mist ja ka­su­tuse­le­võttu kon­tei­ne­ri­tes. See parandab ra­ken­duste ska­lee­ri­ta­vust, hooldust ja paind­lik­kust.

Vir­tuaal­ma­si­nate eelised

  • Suurem iso­lee­ri­tus: vir­tuaal­ma­si­nad pakuvad suuremat iso­lee­ri­tust üksikute VM-ide vahel, kuna igal VM-il on oma ope­rat­sioo­ni­süs­teem ja ressursid. See suurendab tur­va­li­sust ja vähendab rünnakute ja and­melek­kede riski.
  • Täielik vir­tua­li­see­ri­mine: VM-id või­mal­da­vad teil kasutada sama füüsilise hosti peal erinevaid ope­rat­sioo­ni­süs­teeme, mis suurendab erinevate ope­rat­sioo­ni­süs­teemide ja ra­ken­duste ühil­du­vust.
  • Vanad ra­ken­dused: VM-e saab kasutada vanade ra­ken­duste käi­ta­miseks, mis nõuavad spet­sii­fi­list ope­rat­sioo­ni­süs­teemi keskkonda. Need või­mal­da­vad vanu rakendusi käitada prae­gus­tel riist­va­raplat­vormi­del, mõ­ju­ta­mata keskkonna sta­biil­sust.
  • Täpne res­surs­side haldamine: VM-id pakuvad täpsemat res­surs­side haldamist, kuna igal VM-il on oma ressursid, mida saab eraldi hallata. See võimaldab res­surs­side jaotamist ja ka­su­ta­mist täpsemalt kont­rol­lida.
  • Ohu­tus­krii­ti­li­sed ra­ken­dused: VM-id sobivad hästi ohu­tus­krii­ti­liste ra­ken­duste käi­ta­miseks, mis nõuavad suurt iso­lat­siooni ja tur­va­li­sust. Ope­rat­sioo­ni­süs­teemide ja res­surs­side eral­da­mine vähendab tur­va­riske.

Milline sobib teie pro­jek­tile? Docker vs vir­tuaal­ma­si­nad

Docker ja vir­tuaal­ma­si­nate vahel valiku tegemine sõltub mitmest tegurist, seal­hul­gas rakenduse tüübist, tur­va­nõue­test ja va­ja­li­kust paind­lik­ku­sest. Seetõttu on oluline kaaluda eespool loetletud teh­no­loo­giate eeliseid ja valida seejärel oma projekti va­ja­dus­tele kõige paremini sobiv.

Docker sobib eriti hästi ra­ken­dus­tele, millel on:

  • lühikesed ka­su­tuse­le­võtu tsüklid
  • mik­ro­tee­nuste ar­hi­tek­tuuri piiratud res­sur­si­va­ja­du­sed
  • kiire ska­lee­ri­ta­vus
  • füüsiline inf­ra­struk­tuur, mis on laialt levinud

Vir­tuaal­ma­si­nad sobivad hästi järg­mis­tele ees­mär­ki­dele:

  • ope­rat­sioo­ni­süs­tee­mid, millel on ainult üks füüsiline inf­ra­struk­tuur
  • ope­rat­sioo­ni­süs­teemide sea­dis­ta­mine erinevate juh­ti­mis­e­le­men­ti­dega
  • spet­sii­fi­liste sõl­tu­vus­tega ope­rat­sioo­ni­süs­tee­mid
  • riist­va­ra­res­surs­side eri­tin­gi­mu­sed
  • vanad ra­ken­dused, mis ei tööta kaas­aeg­se­tel ope­rat­sioo­ni­süs­teemi­del
Go to Main Menu