Dockeriga kon­tei­ne­ri­mine on tä­na­päe­val stan­dar­diks saanud – kuid see ei ole alati parim valik igas olukorras. Sellised töö­riis­tad nagu Podman või BuildKit pakuvad tugevaid al­ter­na­tiive, pakkudes eeliseid sellistes vald­kon­da­des nagu tur­va­li­sus, CI/CD ja jõudlus. Käes­ole­vas artiklis tut­vus­tame parimaid pro­fes­sio­naal­seid Docker-al­ter­na­tiive, võrdleme nende peamisi omadusi ja aitame teil otsustada, milline lahendus sobib teie konk­reet­sele ka­su­tus­juh­tu­mile kõige paremini.

Dockeri al­ter­na­tiivide võrdlus üle­vaat­li­kult

Funkt­sioon Docker Podman BuildKit Kaniko LXC/LXD runC
Vir­tua­li­see­ri­mine OS-tasand OS-tasand – (koos­ta­mis­va­hend) – (koos­ta­mis­va­hend) OS-tasand OS-tase
Ra­ken­duste kon­tei­ne­rid ~
Täis­süs­teemi kon­tei­ne­rid
Dockeriga ühilduv ~ ~
Juurteta võimalik ~ ~
Sobib CI/CD-le ~
Ku­ber­ne­tes-valmis ~ ~
Kon­tei­neri formaat Docker-konteiner Docker-konteiner Doc­ker­file Kihtidega fai­li­süs­teem LXC OCI
Litsents Apache 2.0 Apache 2.0 Apache 2.0 Apache 2.0 LGPLv2.1+ / Apache 2.0 Apache 2.0
Plat­vor­mid Linux, Windows, macOS, AWS, Azure Linux, Windows Linux, Windows Linux, Ku­ber­ne­tes Linux Linux
Tip

Tahad Dockerist rohkem teada saada? Vaata meie eraldi Docker-õpetust.

Miks kaaluda Dockerile al­ter­na­tiive?

Kuigi Docker on võimas tööriist, ei ole see alati parim valik. Muu­da­tu­sed Docker’i lit­sent­si­tin­gi­mus­tes, näiteks Docker Desktopi kom­mertsia­li­see­ri­mine, on mõjutanud paljusid et­te­võt­teid. Samal ajal võib Docker’i sõltuvus root-õigustest ja keskse daemoni ka­su­ta­mine suu­ren­dada po­tent­siaal­set rün­na­ku­pinda, tekitades seega tur­va­li­su­sega seotud muret.

Lisaks on juhtiv kon­tei­ne­rite haldamise tööriist Ku­ber­ne­tes loobunud Dockerist kui oma vaikimisi ka­su­ta­ta­vast käi­vi­tus­kesk­kon­nast. Selle asemel kasutab ta nüüd selliseid käi­vi­tus­kesk­kondi nagu con­t­ai­nerd või CRI-O. Paljude ra­ken­duste puhul – eriti tur­va­li­su­sele suurt tä­he­le­panu pöö­ra­va­tes kesk­kon­da­des või au­to­ma­ti­see­ri­tud CI/CD-prot­ses­si­des – võivad spet­siaal­sed töö­riis­tad pakkuda paremaid lahendusi.

Podman – Docker ilma daemonita

Podman on praegu tuntumaid ja ot­se­se­maid al­ter­na­tiive Dockerile. Seda teeb eriti hu­vi­ta­vaks asjaolu, et Podman töötab ilma keskse daemonita, või­mal­da­des käivitada kon­tei­ne­ri­prot­sesse otse ja vajaduse korral ilma root-õigusteta. See parandab mär­ki­mis­väär­selt tur­va­li­sust, eriti toot­mis­kesk­kon­da­des.

Image: Podman Homepage
Podman Website Sc­reens­hot

Veel üks eelis on suu­re­pä­rane ühilduvus: kui olete juba tuttav Dockeriga, ei tekita Podman teile mingeid raskusi, kuna selle käskude struktuur on peaaegu identne. Samuti in­teg­ree­rub see sujuvalt systemd ja Ku­ber­ne­te­sega.

Siiski on ka mii­nuspool: Podmani graa­fi­li­sed ka­su­ta­ja­lii­de­sed (GUI) või GUI-töö­riis­tad ei ole nii arenenud kui Docker Desktopi omad. Lisaks võib kee­ru­ka­mate mitme kon­tei­neriga pro­jek­tide puhul Docker Compose’ilt üleminek nõuda mõningaid muudatusi.

Kokkuvõte: Podman on ideaalne lahendus aren­da­ja­tele ja ad­mi­nist­raa­to­ri­tele, kes otsivad turvalist, kä­su­reapõ­hist ja Dockeriga ühilduvat al­ter­na­tiivi – eriti Linuxi toot­mis­kesk­kon­da­des.

BuildKit – kaasaegne Docker-koostaja

BuildKit on Docker-meeskonna poolt välja töötatud, et asendada klas­si­ka­list käsku „docker build“. See paistab silma oma suu­re­pä­rase kiiruse, nutika vahemällu sal­ves­ta­mise ja ehi­tus­sa­la­duste haldamise võime poolest, mis on kee­ru­lis­tes CI/CD-töö­voo­lu­des suur eelis.

Toe­ta­takse ka pa­ral­leel­seid koos­ta­misi, mis muudab BuildKiti eriti tõhusaks. Seda saab ak­ti­vee­rida Dockeris või kasutada ise­seis­vana. Koos Dockeriga või Podmaniga kasutades suurendab see oluliselt pildi koos­ta­mise jõudlust. Miinuseks on aga see, et BuildKit ei asenda Dockeri täie­li­kult. See keskendub ainult koos­ta­mis­prot­ses­sile. Igaüks, kes soovib kon­tei­ne­rite haldamist või ka­su­tuse­le­võttu, vajab selleks li­sa­töö­riista.

Kokkuvõte: BuildKit sobib ideaal­selt DevOpsi mees­kon­da­dele ja aren­da­ja­tele, kes peavad oluliseks kiireid ja turvalisi koos­ta­misi – eriti au­to­ma­ti­see­ri­tud kesk­kon­da­des.

Kaniko – Kon­tei­ne­rite loomine ilma Dockerita

Kaniko on Google’i tööriist, mis on spet­siaal­selt loodud kon­tei­ne­rite koos­ta­miseks Ku­ber­ne­tes-kesk­kon­nas – ilma Dockerita ja juu­r­õi­gus­teta. See töötab täie­li­kult podi sees ning suudab koostada kujutisi otse pilves, näiteks GitHub Actionsis või Google Cloud Buildis.

Seetõttu sobib Kaniko ideaal­selt au­to­ma­ti­see­ri­tud CI/CD-prot­ses­si­desse, kus ei ole vaja pai­gal­dada täien­da­vat käi­vi­tus­kesk­konda. Tur­va­li­suse sei­su­ko­halt on oluline eelis see, et Kaniko töötab ilma root-õigusteta, mis tähendab, et seda saab ohutult kasutada jagatud klast­ri­kesk­kon­da­des. Siiski ei ole Kaniko uni­ver­saalne tööriist. See ei sobi ko­ha­likuks aren­dus­tööks ega in­te­rak­tiiv­seks töö ks käsurealt – puuduvad sellised ta­va­pä­ra­sed funkt­sioo­nid nagu shell-juur­de­pääs või paindlik kon­tei­ne­ri­hal­dus.

Kokkuvõte: Kaniko sobib ideaal­selt pil­ve­põ­his­tes kesk­kon­da­des töö­ta­va­tele mees­kon­da­dele, kes soovivad tur­va­li­selt au­to­ma­ti­see­rida kon­tei­ne­ri­põ­hi­seid ehi­ta­mis­prot­sesse – eriti Ku­ber­ne­tes-kesk­kon­da­des.

LXC / LXD – Süs­tee­mi­ta­sandi kon­tei­ne­ri­mine

LXC (Linux Con­t­ai­ners) on Linuxi ope­rat­sioo­ni­süs­teemi vir­tua­li­see­ri­miseks mõeldud madala taseme teh­no­loo­gia, mida on kasutatud juba üle kümne aasta. See võimaldab käitada ja hallata ter­vik­likke Linuxi süsteeme kon­tei­ne­ri­tes – mida ta­va­li­selt ni­me­ta­takse süs­tee­mi­kon­tei­ne­ri­teks.

Image: LXC Homepage
LXC Homepage Sc­reens­hot

Ca­no­nicali poolt 2015. aastal välja töötatud LXD pakub LXC-le ka­su­ta­ja­sõb­ra­likku hal­dus­ta­san­dit. See lisab selliseid funkt­sioone nagu oma kä­su­realii­des, REST-API, pil­di­hal­dus ja hetktõm­mised, mis muudab selle eriti ka­su­likuks pro­fes­sio­naal­se­tes inf­ra­struk­tuu­ri­des.

LXC ja LXD – miks nad taas ühinesid

2023. aastal andis Canonical LXD tagasi LXC-ko­gu­kon­nale ning sellest ajast alates on mõlemat projekti arendatud ühiselt Linux Con­t­ai­ners Projecti raames. Selle ühinemise eesmärk on tagada lä­bi­paist­vam ko­gu­kon­na­põ­hine hooldus ja mõlema kom­po­nendi tihedam in­teg­ree­ri­mine. Kuigi LXC jääb teh­ni­li­seks aluseks, toimib LXD endiselt ka­su­ta­ja­sõb­ra­liku ka­su­ta­ja­lii­de­sena.

Funkt­sio­naalne jaotus jääb samaks:

  • LXC on madala taseme teh­no­loo­gia
  • LXD jääb mugavaks hal­dus­lii­de­seks

Tehniline klas­si­fi­kat­sioon

Võrreldes Dockeriga on LXC ja LXD palju lähemal tra­dit­sioo­ni­lis­tele vir­tuaal­ma­si­na­tele. Need pakuvad täielikke süs­tee­mi­kesk­kondi, mis hõlmavad init-süsteeme, ka­su­ta­jate haldamist, pakettide haldamist ja muud – ulatudes kaugemale Docker või Podman poolt pa­ku­ta­va­test tüü­pi­lis­test ra­ken­dus­kon­t­ai­ne­ri­test. Kuna need ei kasuta hü­per­viisorit, suudavad nad siiski jääda ker­ge­kaa­lu­lis­teks ja jõud­lus­rik­ka­teks.

Piirangud

Miinuseks on see, et LXC/LXD ei ole op­ti­mee­ri­tud mik­ro­tee­nuste, pil­ve­põ­histe ra­ken­duste ega kaas­aeg­sete CI/CD-prot­ses­side jaoks. Haldamine võib olla kee­ru­li­sem ning in­teg­rat­sioon selliste kon­tei­ne­rite öko­süs­teemi­dega nagu Ku­ber­ne­tes on mi­ni­maalne.

Kokkuvõte: LXC ja LXD sobivad suu­re­pä­ra­selt ad­mi­nist­raa­to­ri­tele, vee­bi­ma­ju­tuse pak­ku­ja­tele või mees­kon­da­dele, kes soovivad iso­lee­rida ter­vik­likke Linuxi süsteeme – toimides ker­ge­kaa­lu­lise vir­tuaal­ma­sina al­ter­na­tiivina. Nende ühen­da­mine Linux Con­t­ai­ners Projecti raames tõotab mõlemale teh­no­loo­giale sta­biil­se­mat ja kogukonna poolt hool­da­ta­vat tulevikku.

runC – Kon­tei­neri käi­vi­tus­kesk­kond kogenud ka­su­ta­ja­tele

runC on OCI-spet­si­fi­kat­siooni (Open Container Ini­tia­tive) eta­lon­ra­ken­dus, mida kasutavad taustal paljud töö­riis­tad, nagu Docker, Podman või con­t­ai­nerd. Igaüks, kes soovib kon­tei­ne­ri­tega tegeleda ma­da­lai­mal tasandil, peab tõe­näo­li­selt kasutama runC-d.

Selle suurimaks eeliseks on kergus, kuna runC pakub vaid kon­tei­ne­rite käi­vi­ta­miseks vajalikke põ­hi­funkt­sioone, mis muudab selle väga paind­likuks. See sobib ideaal­selt ko­han­da­tud kon­tei­ne­ri­la­hen­duste või tur­va­li­su­sele kes­ken­du­nud kesk­kon­dade jaoks.

Siiski on runC mõeldud kogenud ka­su­ta­ja­tele. Sellel puudub mugav kä­su­realii­des kon­tei­ne­rite hal­da­miseks või koos­ta­miseks ning seda ka­su­ta­takse ta­va­li­selt osana ko­han­da­tud töö­riis­ta­ket­ti­dest või sügavaks süs­tee­miin­teg­rat­sioo­niks.

Kokkuvõte: runC sobib ideaal­selt spet­sii­fi­liste ra­ken­duste, teadustöö, tur­va­li­suse või madala taseme kon­tei­ner­kesk­kon­dade jaoks – see ei ole mõeldud iga­päe­va­seks aren­dus­tööks.

Ku­ber­ne­tes – mitte Dockerile al­ter­na­tiiv, vaid sellest kõrgemal asuv kiht

Levinud väära­ru­saam on, et Ku­ber­ne­tes ei asenda Dockeri. Te­ge­li­kult kasutab Ku­ber­ne­tes kon­tei­ne­rite käi­ta­miseks kon­tei­ne­rite käi­ta­mis­kesk­kondi. Kuigi Docker oli kunagi vaikimisi kasutatav käi­ta­mis­kesk­kond, on Ku­ber­ne­tes alates ver­sioo­nist 1.20 võtnud ka­su­tusele stan­dar­di­see­ri­tud käi­ta­mis­kesk­kon­dad nagu con­t­ai­nerd või CRI-O.

Image: Kubernetes Homepage
Ku­ber­ne­tes Homepage Sc­reens­hot

Need töö­riis­tad tegelevad kon­tei­ne­rite hal­da­mi­sega, kuid neil puudub Dockeriga sarnane oma koostamis- või kä­su­realii­d­ese funkt­sio­naal­sus. Seetõttu ei ole Ku­ber­ne­tes ise Dockerile al­ter­na­tiiv, vaid or­kest­ree­ri­mis­töö­riist – kon­tei­ne­rite kohal asuv juh­ti­mis­ta­sand.

Praktikas tähendab see, et igaüks, kes töötab Ku­ber­ne­te­sega, peaks mõistma, et Docker ei ole enam tehniline alus – kuigi paljud pildid on endiselt Docker-vormingus.

Milline Docker-al­ter­na­tiiv sobib just sulle?

Sobiv Docker-al­ter­na­tiiv sõltub suuresti teie konk­reet­se­test va­ja­dus­test:

  • Mak­si­maalse tur­va­li­suse ta­ga­miseks on Podman parim valik.
  • Kõrge jõud­lu­sega ehituste puhul paistab silma BuildKit, samas kui pil­ve­kesk­kon­da­des eelis­ta­takse Kaniko.
  • Terve süsteemi iso­lee­ri­miseks on parem valik LXC/LXD.
  • Täieliku kontrolli saa­vu­ta­miseks käi­ta­mis­aja tasandil on runC pro­fes­sio­naa­li­dele sobiv lihtne lahendus.

Lõpp­kok­ku­võt­tes tasub vaadata kaugemale Dockerist – kon­tei­ne­rite maailm on mit­me­ke­si­sem kui kunagi varem.

Go to Main Menu