So­vel­lus­ten käyt­töön­ot­toon on olemassa kaksi pää­tek­niik­kaa: Docker ja vir­tu­aa­li­ko­neet (VM). Molemmat tarjoavat vaih­toeh­to­ja so­vel­lus­ten ja re­surs­sien eris­tä­mi­seen, mutta ne eroavat toi­sis­taan lä­hes­ty­mis­ta­voil­taan ja so­vel­luk­sil­taan. Tässä ar­tik­ke­lis­sa annamme yleis­kat­sauk­sen Docker-tekniikan ja vir­tu­aa­li­ko­nei­den yh­tä­läi­syyk­sis­tä ja eroista, niiden eduista ja haitoista sekä niiden käyt­tö­koh­teis­ta.

Mikä on Docker?

Docker on vir­tua­li­soin­ti­rat­kai­su, jonka avulla voit pakata ja suorittaa so­vel­luk­sia ja niiden riip­pu­vuuk­sia kont­teis­sa. Docker-kontti on eristetty ympäristö, joka sisältää kaikki so­vel­luk­sen kom­po­nen­tit, kuten käyt­tö­jär­jes­tel­män, suo­ri­tusym­pä­ris­tön, kirjastot ja ko­koon­pa­not. Kontti voidaan suorittaa millä tahansa Docker-jär­jes­tel­mäl­lä riip­pu­mat­ta taustalla olevan infra­struk­tuu­rin eroista. Docker-ratkaisun etuja ovat so­vel­lus­ten nopea käyt­töön­ot­to, helppo skaalaus ja pienempi re­surs­sien käyttö ver­rat­tu­na muihin vir­tua­li­soin­ti­tek­no­lo­gioi­hin, kuten vir­tu­aa­li­ko­nei­siin.

Mikä on vir­tu­aa­li­ko­ne (VM)?

Vir­tu­aa­li­ko­neet (VM) ovat toinen tapa vir­tua­li­soi­da so­vel­luk­sia. Vir­tu­aa­li­ko­neet ovat fyysisten tie­to­ko­nea­lus­to­jen oh­jel­mis­toe­mu­loin­te­ja, joiden avulla voit käyttää useita käyt­tö­jär­jes­tel­miä ja so­vel­luk­sia yhdellä fyy­si­sel­lä isän­tä­ko­neel­la. Niitä käytetään moniin eri tar­koi­tuk­siin, kuten:

  • Pal­ve­lin­ten kon­so­li­doin­ti: Yritykset voivat kon­so­li­doi­da useita pal­ve­li­mia yhdelle fyy­si­sel­le isännälle, jotta lait­teis­toa voidaan käyttää te­hok­kaas­ti ja kus­tan­nuk­sia voidaan vähentää.
  • Kehitys: Ke­hit­tä­jät voivat käyttää vir­tu­aa­li­ko­nei­ta eri käyt­tö­jär­jes­tel­mien ja ke­hi­ty­sym­pä­ris­tö­jen si­mu­loi­mi­seen so­vel­lus­ten ke­hit­tä­mis­tä ja tes­taa­mis­ta varten. So­vel­lus­ten eris­tä­mi­nen: Vir­tu­aa­li­ko­nei­den avulla so­vel­luk­sia ja niiden riip­pu­vuuk­sia voidaan suorittaa eris­te­tyis­sä ym­pä­ris­töis­sä, mikä lisää tur­val­li­suut­ta ja vähentää so­vel­lus­ten välisten ris­ti­rii­to­jen riskiä. Tur­val­li­suus: Vir­tu­aa­li­ko­nei­ta käytetään usein eri hyök­käyss­ke­naa­rioi­den si­mu­loi­mi­seen ja tur­val­li­suus­kon­sep­tien tes­taa­mi­seen.

Mitä yhteistä Doc­ke­ril­la ja vir­tu­aa­li­ko­neil­la on?

Docker ja vir­tu­aa­li­ko­neet ovat lä­hes­ty­mis­ta­val­taan täysin erilaisia, mutta niillä on myös useita yhteisiä piirteitä, eri­tyi­ses­ti siir­ret­tä­vyy­den, kuvien ja ver­sioi­den hallinnan osalta.

Siir­ret­tä­vyys

Sekä Docker että vir­tu­aa­li­ko­neet ovat erittäin siir­ret­tä­viä, ja niiden avulla voit suorittaa so­vel­luk­sia ja niiden riip­pu­vuuk­sia sau­mat­to­mas­ti eri jär­jes­tel­mis­sä ja alus­toil­la. Docker-kontteja voidaan käyttää missä tahansa jär­jes­tel­mäs­sä, jossa on Docker. Vas­taa­vas­ti vir­tu­aa­li­ko­nei­ta voidaan ottaa käyttöön eri hy­per­vi­so­reis­sa ja pil­via­lus­toil­la, kunhan kyseinen ympäristö tukee kyseistä vir­tua­li­soin­ti­tek­no­lo­gi­aa.

Kuvat

Toinen Docker- ja vir­tu­aa­li­ko­nei­den välinen yh­tä­läi­syys on niiden ku­va­kon­sep­ti. VM - ja Docker-kuvat toimivat malleina, jotka kuvaavat so­vel­luk­sen tai käyt­tö­jär­jes­tel­män tilaa ja ko­koon­pa­noa. Mo­lem­mis­sa ta­pauk­sis­sa kuvat voidaan versioida ja hallita so­vel­luk­sen tai käyt­tö­jär­jes­tel­män eri ver­sioi­den seurantaa ja ylläpitoa varten. Näin ke­hit­tä­jät voivat varmistaa yh­den­mu­kai­set ja tois­tet­ta­vat käyt­töö­no­tot sekä seurata jär­jes­tel­mäl­li­ses­ti so­vel­luk­siin ja jär­jes­tel­män ko­koon­pa­noi­hin tehtyjä muutoksia. Kuvien käyttö myös yk­sin­ker­tais­taa ke­hi­tyk­sen, tes­tauk­sen ja tuotannon välistä yh­teis­työ­tä, koska ke­hit­tä­jät ja ope­ra­tii­vi­set tiimit voivat käyttää samoja kuvia var­mis­taak­seen, että so­vel­luk­set asen­ne­taan yh­den­mu­kai­ses­ti eri ym­pä­ris­töis­sä.

Ver­sioi­den hallinta

Sekä Docker että vir­tu­aa­li­ko­neet tukevat kuvien ver­sio­hal­lin­taa, mikä yk­sin­ker­tais­taa ke­hi­tyspro­ses­sia ja varmistaa so­vel­lus­ten yh­den­mu­kai­sen käyt­töö­no­ton. Ver­sio­hal­lin­nan avulla ke­hit­tä­jät voivat seurata ja kumota kuvien muutoksia, mikä varmistaa so­vel­lus­ten vakauden ja luo­tet­ta­vuu­den.

Mitkä ovat Docker-oh­jel­mis­ton ja vir­tu­aa­li­ko­nei­den erot?

Vaikka Docker ja vir­tu­aa­li­ko­neet molemmat käytetään so­vel­lus­ten ajamiseen eri­lai­sis­sa ym­pä­ris­töis­sä, ne toimivat eri tavoin. Alla on esitetty joitakin tär­keim­piä eroja.

Ta­voit­teet

Dockerin pää­ta­voit­tee­na on ottaa käyttöön so­vel­luk­sia ja pal­ve­lui­ta kont­tei­hin, jotka tarjoavat erillisiä, siir­ret­tä­viä ym­pä­ris­tö­jä. Docker keskittyy so­vel­lus­ten te­hok­kuu­den ja skaa­lau­tu­vuu­den pa­ran­ta­mi­seen sekä niiden käyt­töö­no­ton yk­sin­ker­tais­ta­mi­seen.

Sitä vastoin vir­tu­aa­li­ko­neet tarjoavat täy­del­li­sen vir­tua­li­soin­tiym­pä­ris­tön, jossa useita käyt­tö­jär­jes­tel­miä voidaan suorittaa yhdellä isän­tä­ko­neel­la. Niiden pää­asial­li­nen tarkoitus on mah­dol­lis­taa käyt­tä­jil­le eristetyn vir­tu­aa­liym­pä­ris­tön luominen, joka on riip­pu­ma­ton taustalla olevasta lait­teis­tos­ta.

Ark­ki­teh­tuu­ri

Docker-kontit jakavat resurssit isän­tä­käyt­tö­jär­jes­tel­män ja sen ytimen kanssa. Tämä tar­koit­taa, että niiden yli­kuor­mi­tus on pienempi ja käyn­nis­ty­sa­jat nopeammat kuin vir­tu­aa­li­ko­neil­la.

Vir­tu­aa­li­ko­neet emuloivat täy­del­li­sen lait­teis­to­ym­pä­ris­tön ja niillä on oma käyt­tö­jär­jes­tel­mä, joka on riip­pu­ma­ton isän­tä­käyt­tö­jär­jes­tel­mäs­tä ja muista vir­tu­aa­li­ko­neis­ta. Tämä mah­dol­lis­taa paremman eris­tyk­sen, mutta vaatii enemmän re­surs­se­ja ja käyn­nis­ty­mi­sai­ka on pidempi kuin konttien.

Tur­val­li­suus

Docker-kontit jakavat ytimen isän­tä­käyt­tö­jär­jes­tel­män kanssa, mikä voi aiheuttaa tur­val­li­suus­ris­ke­jä. Virheitä tai hait­taoh­jel­mia sisältävä kont­ti­ku­va voi vaikuttaa koko isäntään.

Sen sijaan vir­tu­aa­li­ko­neet toimivat omalla käyt­tö­jär­jes­tel­mäl­lään, mikä tar­koit­taa, että ne ovat eris­ty­neem­piä. Tämä tarjoaa paremman tie­to­tur­van, koska vir­tu­aa­li­ko­nee­seen koh­dis­tu­vat hyök­käyk­set vai­kut­ta­vat yleensä vain kyseiseen vir­tu­aa­li­ko­nee­seen.

Resurssit

Docker-kontit jakavat resurssit isän­tä­käyt­tö­jär­jes­tel­män kanssa, mikä takaa lait­teis­ton te­hok­kaam­man käytön. Re­surs­sien­ku­lu­tuk­sen kannalta raskaiden työ­kuor­mien eris­tä­mi­nen voi kuitenkin olla vaikeaa.

Jo­kai­sel­la vir­tu­aa­li­ko­neel­la on omat re­surs­sin­sa, jotka ovat täysin erillään muista vir­tu­aa­li­ko­neis­ta. Tämä mah­dol­lis­taa tarkemman re­surs­sien hallinnan ja työ­kuor­mien eris­tä­mi­sen.

Suo­ri­tus­ky­ky

Docker-kontit tarjoavat yleensä paremman suo­ri­tus­ky­vyn ja lyhyemmät käyn­nis­ty­sa­jat kuin vir­tu­aa­li­ko­neet.

Täy­del­li­sen vir­tua­li­soin­tiym­pä­ris­tön­sä vuoksi vir­tu­aa­li­ko­neil­la on enemmän yli­mää­räi­siä kus­tan­nuk­sia ja pidemmät käyn­nis­ty­sa­jat. Ne sopivat kuitenkin paremmin re­surs­sien­ku­lu­tuk­sel­taan ras­kai­siin työ­kuor­miin, jotka vaativat vankkaa eris­tä­mis­tä.

Siir­ret­tä­vyys

Docker-kontit voidaan helposti siirtää eri ym­pä­ris­tö­jen välillä, kunhan koh­de­tie­to­ko­nees­sa on Docker.

VM-kuvat ovat vähemmän siir­ret­tä­viä, koska ne si­säl­tä­vät koko käyt­tö­jär­jes­tel­män eikä vain yhtä so­vel­lus­ta. VM-kuvien siir­tä­mi­nen eri hy­per­vi­so­rien välillä vaatii yleensä muun­ta­mi­sen.

Mitkä ovat Docker-oh­jel­mis­ton edut vir­tu­aa­li­ko­nei­siin ver­rat­tu­na?

Edellä lue­tel­tu­jen erojen vuoksi Doc­ke­ril­la ja vir­tu­aa­li­ko­neil­la on kum­mal­la­kin omat etunsa, ja ne sopivat eri­lai­siin käyt­tö­tar­koi­tuk­siin.

Dockerin edut

  • Kevyet kontit: Docker-kontit käyttävät vähemmän re­surs­se­ja kuin vir­tu­aa­li­ko­neet. Ne mah­dol­lis­ta­vat so­vel­lus­ten nopean käyt­töö­no­ton ja re­surs­sien tehokkaan käytön.
  • Siir­ret­tä­vyys: Docker-kontit ovat siir­ret­tä­viä ja niitä voidaan käyttää eri jär­jes­tel­mis­sä ja pil­via­lus­toil­la, kunhan ympäristö tukee Dockeria. Tämä helpottaa so­vel­lus­ten käyt­töön­ot­toa ja skaa­laus­ta eri ym­pä­ris­töis­sä.
  • Nopea käyt­töön­ot­to: Docker mah­dol­lis­taa so­vel­lus­ten nopean käyt­töö­no­ton kont­ti­tek­no­lo­gian avulla. Ke­hit­tä­jät voivat nopeasti luoda, käyn­nis­tää ja pysäyttää kontteja, mikä nopeuttaa kehitystä ja käyt­töön­ot­toa.
  • Yk­sin­ker­tai­nen or­ke­stroin­ti: Docker-työkalut, kuten Docker Swarm ja Ku­ber­ne­tes, hel­pot­ta­vat konttien or­ke­stroin­tia. Ne mah­dol­lis­ta­vat konttien jakamisen useiden isäntien kesken, skaa­lauk­sen au­to­ma­ti­soin­nin ja luo­tet­ta­vuu­den var­mis­ta­mi­sen.
  • Mik­ro­pal­ve­luark­ki­teh­tuu­ri: Docker sopii mik­ro­pal­ve­luark­ki­teh­tuu­rien to­teut­ta­mi­seen, koska se mah­dol­lis­taa yk­sit­täis­ten pal­ve­lui­den eris­tä­mi­sen ja käyt­töö­no­ton kont­tei­hin. Tämä parantaa so­vel­lus­ten skaa­lau­tu­vuut­ta, ylläpitoa ja jous­ta­vuut­ta.

Vir­tu­aa­li­ko­nei­den edut

  • Parempi eris­tä­mi­nen: Vir­tu­aa­li­ko­neet tarjoavat paremman eris­tyk­sen yk­sit­täis­ten vir­tu­aa­li­ko­nei­den välillä, koska jo­kai­sel­la vir­tu­aa­li­ko­neel­la on oma käyt­tö­jär­jes­tel­mä ja omat resurssit. Tämä parantaa tie­to­tur­vaa ja vähentää hyök­käys­ten ja tie­to­vuo­to­jen riskiä.
  • Täy­del­li­nen vir­tua­li­soin­ti: VM:ien avulla voit käyttää erilaisia käyt­tö­jär­jes­tel­miä samalla fyy­si­sel­lä isän­tä­ko­neel­la, mikä lisää eri käyt­tö­jär­jes­tel­mien ja so­vel­lus­ten yh­teen­so­pi­vuut­ta.
  • Vanhat so­vel­luk­set: VM-koneita voidaan käyttää vanhojen so­vel­lus­ten ajamiseen, jotka vaativat tietyn käyt­tö­jär­jes­tel­mäym­pä­ris­tön. Niiden avulla vanhoja so­vel­luk­sia voidaan ajaa ny­kyi­sil­lä lait­teis­toa­lus­toil­la ilman, että se vaikuttaa ym­pä­ris­tön vakauteen.
  • Tarkka re­surs­sien hallinta: Vir­tu­aa­li­ko­neet tarjoavat tarkemman re­surs­sien hallinnan, koska jo­kai­sel­la vir­tu­aa­li­ko­neel­la on omat re­surs­sin­sa, joita voidaan hallita erikseen. Tämä mah­dol­lis­taa re­surs­sien jakamisen ja käytön tarkemman hallinnan.
  • Tur­val­li­suusk­riit­ti­set so­vel­luk­set: VM:t sopivat hyvin tur­val­li­suusk­riit­tis­ten so­vel­lus­ten ajamiseen, jotka vaativat korkeaa eris­tys­ta­soa ja tur­val­li­suut­ta. Käyt­tö­jär­jes­tel­mien ja re­surs­sien erot­ta­mi­nen minimoi tur­val­li­suus­ris­kit.

Mikä sopii parhaiten pro­jek­tii­si? Docker vai vir­tu­aa­li­ko­neet?

Docker- ja vir­tu­aa­li­ko­nei­den välinen valinta riippuu useista te­ki­jöis­tä, kuten so­vel­luk­sen tyypistä, tur­val­li­suus­vaa­ti­muk­sis­ta ja tar­vit­se­mas­ta­si jous­ta­vuu­des­ta. Siksi on tärkeää punnita edellä lue­tel­tu­jen tek­no­lo­gioi­den edut ja valita sitten pro­jek­tii­si parhaiten sopiva vaih­toeh­to.

Docker sopii erityisen hyvin so­vel­luk­siin, joissa on:

  • lyhyet käyt­töön­ot­to­syklit
  • mik­ro­pal­ve­luark­ki­teh­tuu­rin ra­jal­li­set re­surs­si­tar­peet
  • nopea skaa­lau­tu­vuus
  • ha­jau­tet­tu fyysinen infra­struk­tuu­ri

Vir­tu­aa­li­ko­neet sopivat hyvin seu­raa­viin käyt­tö­tar­koi­tuk­siin:

  • käyt­tö­jär­jes­tel­mät, joissa on vain yksi fyysinen infra­struk­tuu­ri
  • käyt­tö­jär­jes­tel­mien asennus eri­lai­sil­la oh­jause­le­men­teil­lä
  • käyt­tö­jär­jes­tel­mät, joilla on erityisiä riip­pu­vuuk­sia
  • eri­tyis­vaa­ti­muk­set lait­teis­to­re­surs­seil­le
  • vanhat so­vel­luk­set, jotka eivät toimi ny­ky­ai­kai­sis­sa käyt­tö­jär­jes­tel­mis­sä
Siirry pää­va­lik­koon