Millised on parimad Docker-tööriistad? Ülevaade
Dockeri laiaulatuslik ökosüsteem pakub arendajatele mitmeid võimalusi rakenduste kasutuselevõtuks, konteinerite haldamiseks ja muukski. Tutvustame olulisemaid Docker-tööriistu ning anname ülevaate populaarsematest kolmandate osapoolte projektidest, mis arendavad avatud lähtekoodiga Docker-tööriistu.
Millised on Docker’i peamised tööriistad ja komponendid?
Tänapäeval on Docker palju enamat kui lihtsalt arenenud platvorm tarkvarakonteinerite haldamiseks. Arendajad on loonud mitmesuguseid Docker-tööriistu, et muuta rakenduste kasutuselevõtt hajutatud infrastruktuuris ja pilvekeskkondades lihtsamaks, kiiremaks ja paindlikumaks. Lisaks klastrite loomise ja koordineerimise tööriistadele on olemas ka keskne rakenduste pood ning pilveressursside haldamise tööriist.
Docker Engine
Kui arendajad räägivad „Dockerist”, peavad nad tavaliselt silmas avatud lähtekoodiga kliendi-serveri rakendust, mismoodustab konteinerplatvormi aluse. Seda rakendust nimetatakse Docker Engine’iks. Docker Engine’i keskseks osaks on Docker-daemon, REST-API ja CLI (käsuviivaliides), mis toimib kasutajaliidesena.
Selle lahenduse abil saate suhelda Docker Engine’iga käsurea käskude kaudu ning hallata Docker-pilte, Docker-faile ja Docker-konteinereid mugavalt terminali kaudu.

Docker Engine’i üksikasjaliku kirjelduse leiate meie algajatele mõeldud Docker-juhendist „Docker-juhend: paigaldamine ja esimesed sammud“.
Docker Hub
Docker Hub pakub kasutajatele pilvepõhist registrit, mis võimaldab Docker-kujutisi alla laadida, neid keskelt hallata ja teiste Docker-kasutajatega jagada. Registreeritud kasutajad saavad Docker-kujutisi salvestada avalikesse või privaatsetesse hoidlatesse. Avaliku kujutise allalaadimiseks (mida Docker-terminoloogias nimetatakse „pulling’uks” ) ei ole vaja kasutajakontot. Integreeritud sildimehhanism võimaldab kujutiste versioonide haldamist.
Lisaks teiste Docker-kasutajate avalikele hoidlatele on Docker Hubi ametlikes hoidlatest leida ka palju ressursse Docker-arendajate meeskonnalt ja tuntud avatud lähtekoodiga projektidelt. Kõige populaarsemate Docker-piltide hulka kuuluvad NGINX-veebiserver, Redis-mälupõhine andmebaas, BusyBox-Unix-tööriistakomplekt ja Ubuntu Linuxi distributsioon.

Organisatsioonid on veel üks oluline Docker Hubi funktsioon, mis võimaldab Docker-kasutajatel luua privaatseid hoidlaid, mis on kättesaadavad ainult valitud inimrühmale. Juurdepääsuõigusi hallatakse organisatsiooni sees meeskondade ja rühmade liikmelisuse kaudu.
Docker Swarm
Docker Engine sisaldab sisseehitatud funktsiooni, mis võimaldab kasutajatel hallata Docker-hoste klastrites, mida nimetatakse swarmideks. Docker Engine’i sisseehitatud klastrihaldus- ja koordineerimisvõimalused põhinevad Swarmkit-tööriistakomplektil. Kui kasutate konteinerplatvormi vanemat versiooni, on Docker-tööriist saadaval eraldiseisva rakendusena.
Swarm on Dockerile omane klastrite loomise tööriist, mis koondab Docker-hostide rühma üheks virtuaalseks hostiks ja pakub Docker REST API-d. Iga Docker-daemoniga seotud Docker-tööriist saab Swarmile juurde pääseda ja skaleerida end mis tahes arvu Docker-hostide vahel. Docker Engine’i käsurealiidese abil saavad kasutajad luua swarme, jaotada rakendusi klastris ja hallata swarmi toimimist ilma täiendava orkestreerimistarkvara kasutamiseta.
Klastritesse koondatud Docker-mootorid töötavad swarm-režiimis. Valige see, kui soovite luua uue klastri või lisada Docker-hosti olemasolevasse swarmi. Klastri üksikuid Docker-hoste nimetatakse „sõlmedeks”. Klastri sõlmed võivad töötada virtuaalsete hostidena samas kohalikus süsteemis, kuid sagedamini kasutatakse pilvepõhist lahendust, kus Docker-swarmi üksikud sõlmed on jaotatud erinevate süsteemide ja infrastruktuuride vahel.
Tarkvara põhineb master-worker-arhitektuuril. Kui ülesandeid tuleb Swarmis jaotada, edastavad kasutajad teenuse haldussõlme. Haldussõlm vastutab seejärel konteinerite ajastamise eest klastris ning toimib peamise kasutajaliidesena Swarmi ressurssidele juurdepääsuks.
Juhtsõlm saadab töötajate sõlmedele üksikuid ülesandeid, mida nimetatakse ülesanneteks.
- Teenused: teenused on Docker-klastrite kesksed struktuurid. Teenus määratleb Docker-klastris täidetava ülesande. Teenus hõlmab sama kujutise põhjal loodud konteinerite rühma. Teenuse loomisel määrab kasutaja, millist kujutist ja milliseid käske kasutatakse. Lisaks pakuvad teenused võimalust rakendusi skaleerida. Docker-platvormi kasutajad määravad lihtsalt, mitu konteinerit teenuse jaoks käivitatakse.
- Ülesanded: teenuste klastris jaotamiseks jagab haldussõlm need üksikuteks tööüksusteks (ülesanneteks). Iga ülesanne sisaldab Docker-konteinerit ning selles täidetavaid käske.
Lisaks klastrite haldamisele ja konteinerite koordineerimisele võivad haldussõlmed vaikimisi täita ka töötajate sõlmede ülesandeid – välja arvatud juhul, kui piirad nende sõlmede ülesandeid rangelt haldusülesannetega.
Igal töötajasõlmel töötab agendiprogramm. See võtab vastu ülesandeid ja edastab vastavale juhtsõlme staatusaruanded üleantud ülesande täitmise käigu kohta. Järgnev joonis kujutab Docker Swarmi skeemilist esitusviisi:

Docker Swarmi kasutuselevõtmisel tuginevad kasutajad tavaliselt Docker-masinale.
Docker Compose
Docker Compose võimaldab mitu konteinerit ühendada ja käivitada üheainsa käsuga. Compose’i põhielement on keskne juhtfail, mis põhineb auhinnatud keelel YAML. Selle Compose-faili süntaks sarnaneb avatud lähtekoodiga tarkvara Vagrant süntaksiga, mida kasutatakse virtuaalmasinate loomiseks ja seadistamiseks.
Failis docker-compose.yml saate määratleda piiramatu arvu tarkvarakonteinereid, sealhulgas kõik sõltuvused, ning nende omavahelised seosed. Selliseid mitme konteinerega rakendusi hallatakse samal viisil kui üksikuid tarkvarakonteinereid. Rakenduse kogu elutsükli haldamiseks kasutage käskudocker-compose koos soovitud alamkäskudega.
Seda Docker-tööriista saab hõlpsasti integreerida Swarmil põhinevasse klastrisse. Nii saate Compose’iga loodud mitme konteineriga rakendusi hajutatud süsteemides käitada sama lihtsalt kui ühel Docker-hostil.
Docker Compose’i veel üks omadus on integreeritud skaleerimismehhanism. Selle koordineerimistööriista abil saate mugavalt käsurea programmi abil määrata, mitu konteinerit soovite konkreetse teenuse jaoks käivitada.
Millised kolmandate osapoolte Docker-tööriistad on olemas?
Lisaks Docker Inc. enda arendustele on olemas mitmesuguseid väliste pakkujate tarkvaravahendeid ja platvorme, mis pakuvad liideseid Docker Engine’ile või on spetsiaalselt selle populaarse konteinerplatvormi jaoks välja töötatud. Docker ökosüsteemis on populaarsemate avatud lähtekoodiga projektide hulgas orkestreerimistööriist Kubernetes, klastrihaldustööriist Shipyard, mitme konteineri saatmislahendus Panamax, pideva integratsiooni platvorm Drone, pilvepõhine operatsioonisüsteem OpenStack ja klastrihalduri Mesosel põhinev andmekeskuse operatsioonisüsteem D2iQ DC/OS.
Kubernetes
Dockeril ei ole alati võimalik välja töötada oma orkestreerimistööriistu, nagu Swarm ja Compose. Seetõttu on mitmed ettevõtted juba aastaid investeerinud oma arendustöösse, et luua spetsiaalselt kohandatud tööriistu, mis hõlbustaksid konteinerplatvormi kasutamist suurtes hajutatud infrastruktuurides. Selle tüübi populaarsemate lahenduste hulka kuulub avatud lähtekoodiga projekt Kubernetes.
Kubernetes on konteineripõhiste rakenduste klastrihaldur. Kubernetese eesmärk on automatiseerida rakenduste tööd klastris. Selleks kasutab orkestreerimistööriist juhtimisliidestena REST-API-d, käsureaprogrammi ja graafilist veebiliidest. Nende liideste abil saab käivitada automatiseerimistoiminguid ja küsida olekuaruandeid. Kubernetest saab kasutada järgmistel eesmärkidel:
- konteineripõhiste rakenduste käivitamine klastris,
- paigaldada ja hallata rakendusi hajutatud süsteemides,
- skaleerida rakendusi ning
- kasutada riistvara võimalikult tõhusalt.
Selleks ühendab Kubernetes konteinerid loogilisteks osadeks, mida nimetatakse podideks. Podid on klastrihalduri põhiüksused, mida saab klastris jaotada ajastamise abil.
Nagu Docker Swarm, põhineb ka Kubernetes juht-töötaja arhitektuuril. Klastri moodustavad Kubernetes-master ja mitmesugused töötajad, keda nimetatakse ka Kubernetes-sõlmedeks (või minioniteks). Kubernetes-master toimib klastri keskse juhtimistasandina ja koosneb neljast põhikomponendist, mis võimaldavad otsest suhtlust klastris ja ülesannete jaotamist. Kubernetes-master koosneb API-serverist, konfiguratsioonimälust etcd, ajastajast ja kontrollerihaldurist.
- API-server: kõik Kubernetes-klastri automatiseerimistoimingud käivitatakse REST-API kaudu API-serveri abil. See toimib klastri keskse haldusliidesena.
- etcd: avatud lähtekoodiga konfiguratsioonimälu etcd-d võib vaadelda kui Kubernetes-klastri mälu. CoreOS-i spetsiaalselt hajutatud süsteemide jaoks arendatud Key Value Store salvestab konfiguratsiooniandmeid ja teeb need kättesaadavaks igale klastri sõlme. Klastri hetkeolukorda saab igal ajal hallata etcd kaudu.
- Scheduler: scheduler vastutab konteinerirühmade (podide) jaotamise eest klastris. See määrab kindlaks podi ressursivajadused ja sobitab need seejärel klastri üksikute sõlmede kättesaadavate ressurssidega.
- Kontrollerihaldur: kontrollerihaldur on Kubernetes-peamooduli teenus, mis juhib orkestreerimist, reguleerides klastri seisundit ja täites rutiinseid ülesandeid. Kontrollerihalduri peamine ülesanne on tagada, et klastri seisund vastaks määratud sihtseisundile.
Kubernetes-peaserveri kõik komponendid võivad asuda samal serveril või olla jaotatud mitme peaserveri vahel kõrge kättesaadavusega klastris.
Kuigi Kubernetes’i master vastutab koordineerimise eest, töötavad klastris jaotatud pod’id hostidel ehk Kubernetes’i sõlmedel, mis alluvad masterile. Selleks peab igal Kubernetes’i sõlmel töötama konteinerimootor. Kuigi Docker on de facto standard, ei pea Kubernetes kasutama kindlat konteinerimootorit.
Lisaks konteinerimootorile hõlmavad Kubernetes’i sõlmed järgmisi komponente:
- kubelet: kubelet on agent, mis töötab igas Kubernetes-sõlmes ja mida kasutatakse sõlme juhtimiseks ja haldamiseks. Iga sõlme keskse kontaktpunktina on kubelet ühendatud Kubernetes-masteriga ning tagab teabe edastamise juhtimistasandile ja vastuvõtmise sealt.
- kube-proxy: lisaks töötab igas Kubernetes-sõlmes proxy-teenus kube-proxy. See tagab, et väljastpoolt tulevad päringud suunatakse edasi vastavatesse konteineritesse, ning pakub teenuseid konteineripõhiste rakenduste kasutajatele. Kube-proxy pakub ka algelist koormuse jaotamist.
Järgneval joonisel on esitatud skeemiline kujutis peamooduli arhitektuurist, millel põhineb orkestreerimisplatvorm Kubernetes:

Lisaks Kubernetese põhiprojektile on olemas ka arvukad tööriistad ja laiendused, mis võimaldavad orkestreerimisplatvormile lisada täiendavaid funktsioone. Kõige populaarsemad neist on seire- ja veadiagnostika tööriistad Prometheus, Weave Scope ja sysdig, samuti pakettihaldur Helm. Samuti on olemas pistikprogrammid Apache Maveni ja Gradle’i jaoks ning Java API, mis võimaldab Kubernetest kaugjuhtimist.
Laevatehas
Shipyard on Swarmil põhinev, kogukonna poolt arendatud halduslahendus, mis võimaldab kasutajatel hallata Docker-ressursse, nagu konteinerid, pildid, hostid ja privaatsed registrid, graafilise kasutajaliidese kaudu. See on kättesaadav veebirakendusena veebibrauseri kaudu. Lisaks klastrihaldusfunktsioonidele, millele pääseb juurde keskse veebiliidese kaudu, pakub Shipyard ka kasutaja autentimist ja rollipõhist juurdepääsukontrolli.
Tarkvara on 100% ühilduv Docker Remote API-ga ning kasutab avatud lähtekoodiga NoSQL-andmebaasi RethinkDB kasutajakontode, aadresside ja sündmuste andmete salvestamiseks. Tarkvara põhineb klastrihaldustööriistakomplektil Citadel ning koosneb kolmest põhikomponendist: kontrollerist, API-st ja kasutajaliidesest.
- Shipyard-kontroller: kontroller on haldustööriista Shipyard keskne komponent. Shipyard-kontroller suhtleb andmete salvestamiseks RethinkDB-ga ning võimaldab pöörduda Docker-klastri üksikute hostide poole ja juhtida sündmusi.
- Shipyard API: Shipyard API põhineb REST-il. Kõiki haldustööriista funktsioone juhitakse Shipyard API kaudu.
- Shipyard kasutajaliides (UI): Shipyard kasutajaliides on AngularJS-rakendus, mis pakub kasutajatele veebibrauseris graafilist kasutajaliidest Docker-klastrite haldamiseks. Kõik kasutajaliideses toimuvad suhtlused toimuvad Shipyard API kaudu.
Lisateavet selle avatud lähtekoodiga projekti kohta leiate Shipyardi ametlikult veebilehelt.
Panamax
Avatud lähtekoodiga tarkvaraprojekti Panamax arendajate eesmärk on lihtsustada mitme konteineriga rakenduste kasutuselevõttu. See tasuta tööriist pakub kasutajatele graafilist kasutajaliidest, mis võimaldab Docker-konteineritel põhinevaid keerukaid rakendusi mugavalt arendada, kasutusele võtta ja levitada „lohistamise ja loovutamise” abil.
Panamax võimaldab salvestada keerukaid mitme konteineriga rakendusi rakendusmallidena ja levitada neid klastriarhitektuurides vaid ühe klõpsuga. GitHubis asuva integreeritud rakenduste turu abil saab ise loodud rakenduste malle salvestada Git-hoidlatesse ja teha need teistele kasutajatele kättesaadavaks.
Panamax-arhitektuuri põhikomponendid võib jagada kahte rühma: Panamax Local Client ja mis tahes arv kaugpaigalduse sihtmärke.
Panamax kohalik klient on selle Docker-tööriista keskne komponent. See töötab kohalikus süsteemis ja võimaldab luua keerukaid konteineripõhiseid rakendusi. Kohalik klient koosneb järgmistest komponentidest:
- CoreOS: Panamaxi kohaliku kliendi paigaldamiseks on vaja Linuxi distributsiooni CoreOS, mis on spetsiaalselt loodud tarkvarakonteinerite jaoks. Seejärel käivitatakse Panamaxi klient CoreOS-is Docker-konteinerina. Lisaks Docker-funktsioonidele on kasutajatel juurdepääs mitmetele CoreOS-i funktsioonidele. Nende hulka kuuluvad muu hulgas Fleet ja Journalctl:
- Fleet: otsese integreerimise asemel Dockeriga kasutab Panamax-klient oma konteinerite koordineerimiseks klastrihaldurit Fleet. Fleet on klastrihaldur, mis kontrollib arvutiklastrites Linuxi daemonit systemd.
- Journalctl: Panamax-klient kasutab Journalctl-i, et taotleda Linuxi süsteemihaldurilt systemd logisõnumeid ajakirjast.
- Kohaliku kliendi installija: kohaliku kliendi installija sisaldab kõiki komponente, mis on vajalikud Panamax-kliendi installimiseks kohalikule süsteemile.
- Panamax kohalik agent: kohaliku kliendi keskne komponent on kohalik agent. See on Panamax API kaudu ühendatud mitmete teiste komponentide ja sõltuvustega. Nende hulka kuuluvad kohalik Docker-host, Panamax kasutajaliides, välised registrid ja klastri kasutuselevõtu sihtmärkide kaugagendid. Kohalik agent suhtleb kohalikus süsteemis Panamax API kaudu järgmiste programmiliidestega, et vahetada teavet töötavate rakenduste kohta:
- Docker kaug-API: Panamax otsib pilte kohalikust süsteemist Docker kaug-API kaudu ja saab teavet töötavate konteinerite kohta.
- etcd API: failid edastatakse CoreOS Fleet daemonile etcd API kaudu.
- systemd-journal-gatewayd.services: Panamax saab käimasolevate teenuste ajakirja väljundi systemd-journal-gatewayd.services kaudu.
Lisaks võimaldab Panamax API suhelda mitmesuguste väliste API-dega.
- Docker Registry API: Panamax hankib pildimärgised Docker Registry API kaudu Docker Registryst.
- GitHub API: Panamax laadib GitHub API kaudu GitHubi hoidlast malli.
- KissMetrics API: KissMetrics API kogub andmeid kasutajate poolt käivitatud mallide kohta.
- Panamax UI: Panamax UI toimib kohalikus süsteemis kasutajaliidesena ja võimaldab kasutajatel juhtida Docker-tööriista graafilise liidese kaudu. Kasutaja sisestused edastatakse otse kohalikule agendile Panamax API kaudu. Panamax UI põhineb CTL Base UI Kitil, mis on CenturyLinki veebiprojektide jaoks mõeldud kasutajaliidese komponentide raamatukogu.
Panamaxi terminoloogias nimetatakse Docker-klastri iga sõlme, millel puuduvad haldusülesanded, kaugpaigaldamise sihtmärgiks. Paigaldamise sihtmärgid koosnevad Docker-hostist, mis on konfigureeritud Panamaxi mallide paigaldamiseks järgmiste komponentide abil:
- Paigalduskeskkondade installija: paigalduskeskkondade installija käivitab Docker-hosti, millele on lisatud Panamax-kaugagent ja orkestreerimisadapter.
- Panamax kaugagent: kui Panamax kaugagent on installitud, saab rakendusi jaotada kohaliku Panamax kliendi kaudu klastri mis tahes soovitud lõpppunkti. Panamax kaugagent töötab Docker-konteinerina igas klastri kasutuselevõtu sihtmärgis.
- Panamax orkestreerimisadapter: orkestreerimisadapteris pakutakse programmi loogikat iga Panamaxile kättesaadava orkestreerimistööriista jaoks iseseisvas adapterikihis. Seetõttu on kasutajatel võimalus alati valida täpselt see orkestreerimistehnoloogia, mida nende sihtkeskkond toetab. Eelkonfigureeritud adapterid hõlmavad Kubernetest ja Fleet:
- Panamax Kubernetes adapter: koos Panamax kaugagendiga võimaldab Panamax Kubernetes adapter Panamax-mallide levitamist Kubernetes-klastrites.
- Panamax Fleet’i adapter: koos Panamax’i kaugagendiga võimaldab Panamax Fleet’i adapter levitada Panamax’i malle klastrites, mida juhitakse Fleet’i klastrihalduri abil.
Järgnev joonis illustreerib Docker-klastri üksikute Panamax-komponentide omavahelist koostoimet:

CoreOS-il põhinev konteinerihaldustööriist Panamax pakub kasutajatele graafilise kasutajaliidese kaudu mitmesuguseid standardseid konteinerite koordineerimise tehnoloogiaid, samuti võimalust hallata mugavalt keerukaid mitme konteineriga rakendusi klastriarhitektuurides, kasutades selleks mis tahes süsteemi (nt oma sülearvutit).
Panamaxi avalik mallide hoidla võimaldab Panamaxi kasutajatel pääseda GitHubi kaudu ligi avalikule mallide kogule, mis sisaldab mitmesuguseid ressursse.
Droon
Drone on lihtne pideva integratsiooni platvorm, millel on minimaalsed nõuded. Selle Docker-tööriista abil saate automaatselt laadida oma uusima koostatud versiooni Git-hoidlast, näiteks GitHubist, ja seda isoleeritud Docker-konteinerites testida. Saate käivitada mis tahes testikomplekti ning saata aruandeid ja staatussõnumeid e-posti teel. Iga tarkvaratesti jaoks luuakse uus konteiner, mis põhineb avalikust Docker-registrist pärit piltidel. See tähendab, et koodi testimise keskkonnana saab kasutada mis tahes avalikult kättesaadavat Docker-pilti.
Drone on integreeritud Dockerisse ja seda toetavad mitmed programmeerimiskeeled, nagu PHP, Node.js, Ruby, Go ja Python. Ainus tõeline eeldus on konteinerplatvorm. Saad luua Drone’i abil oma isikliku pideva integratsiooni platvormi igal süsteemil, kuhu on võimalik Docker installida. Drone toetab mitmesuguseid versioonihalduse hoidlaid ning juhendi standardse installi kohta koos GitHubi integratsiooniga leiad avatud lähtekoodiga projekti veebisaidilt aadressil readme.drone.io.
Järjepideva integratsiooni platvormi haldamine toimub veebiliidese kaudu. Siin saab laadida tarkvarakompilatsioone mis tahes Git-hoidlast, ühendada need rakendustega ja käivitada tulemus eelnevalt määratud testkeskkonnas. Selleks määratakse kindlaks .drone.yml-fail, milles täpsustatakse, kuidas iga tarkvaratesti jaoks rakendus luua ja käivitada.
Droonikasutajatele pakutakse avatud lähtekoodiga CI-lahendust, mis ühendab selliste alternatiivsete toodete nagu Travis ja Jenkins tugevused kasutajasõbralikuks rakenduseks.
OpenStack
Avatud lähtekoodiga pilveinfrastruktuuride rajamisel ja haldamisel on avatud lähtekoodiga pilveoperatsioonisüsteem OpenStack eelistatud tarkvaralahendus.
OpenStacki abil saate hallata arvuti-, salvestus- ja võrguressursse keskse juhtpaneeli kaudu ning teha need lõppkasutajatele kättesaadavaks veebiliidese kaudu.
Pilveoperatsioonisüsteem põhineb modulaarsel arhitektuuril, mis koosneb mitmest komponendist:
- Zun (konteineriteenus): Zun on OpenStacki konteineriteenus, mis võimaldab OpenStacki pilves konteineritesse paigutatud rakenduste lihtsat kasutuselevõttu ja haldamist. Zuni eesmärk on võimaldada kasutajatel hallata konteinerid REST API kaudu, ilma et nad peaksid haldama servereid või klastreid. Zuni kasutamiseks on vaja kolme muud OpenStacki teenust: Keystone, Neutron ja kryr-libnetwork. Zuni funktsionaalsust saab laiendada ka täiendavate OpenStacki teenustega, nagu Cinder ja Glance.
- Neutron (võrgukomponent): Neutron (varem Quantum) on võrgukontrolliks kasutatav teisaldatav, skaleeritav ja API-toega süsteemikomponent. Moodul pakub liidest keeruliste võrgutopoloogiate jaoks ning toetab mitmesuguseid pistikprogramme, mille kaudu saab integreerida laiendatud võrgufunktsioone.
- kuryr-libnetwork (Docker-draiver): kuryr-libnetwork on draiver, mis toimib liidesena Docker ja Neutroni vahel.
- Cinder (plokksalvestus): Cinder on OpenStacki arhitektuuri komponendi hüüdnimi, mis pakub püsivat plokksalvestust virtuaalmasinate tööks. Moodul pakub virtuaalset salvestusruumi iseteenindus-API kaudu. Selle kaudu saavad lõppkasutajad kasutada salvestusressursse, ilma et nad teaksid, milline seade salvestusruumi pakub.
- Keystone (identiteediteenus): Keystone pakub OpenStacki kasutajatele keskset identiteediteenust. Moodul toimib autentimise ja õiguste süsteemina üksikute OpenStacki komponentide vahel. Juurdepääsu pilveprojektidele reguleerivad rentnikud. Iga rentnik esindab kasutajat ning on võimalik määratleda mitu kasutajat, kellel on erinevad õigused.
- Glance (pilditeenus): Glance-mooduliga pakub OpenStack teenust, mis võimaldab virtuaalmasinate pilte salvestada ja neid sealt kätte saada.
Lisateavet OpenStacki komponentide ja teenuste kohta leiate meie artiklist OpenStacki kohta.
Lisaks eespool nimetatud komponentidele on OpenStacki arhitektuuri võimalik laiendada erinevate moodulite abil. Erinevate valikuliste moodulite kohta leiate teavet OpenStacki veebisaidilt.
D2iQ DC/OS
DC/OS (Distributed Cloud Operating System) on D2iQ Inc. (endine Mesosphere) poolt arendatud avatud lähtekoodiga tarkvara hajutatud süsteemide haldamiseks. Projekt põhineb avatud lähtekoodiga klastrihalduril Apache Mesos ja on andmekeskuste operatsioonisüsteem. Lähtekood on kasutajatele kättesaadav Apache litsentsi versiooni 2 alusel GitHubi DC/OS-i hoidlas. Tarkvara ettevõtteversioon on saadaval ka veebisaidil d2iq.com. Projekti põhjalik dokumentatsioon on kättesaadav veebisaidil dcos.io.
DC/OS-i võib vaadelda kui Mesose distributsiooni, mis pakub teile kõiki klastrihalduri funktsioone (keskse kasutajaliidese kaudu) ja laiendab Mesose võimalusi märkimisväärselt.
DC/OS kasutab Mesos-platvormi hajutatud süsteemi tuuma. See võimaldab koondada kogu andmekeskuse ressursid ja hallata neid koondatud süsteemina, mis toimib nagu üksainus loogiline server. Sel viisil saate juhtida terveid füüsiliste või virtuaalsete masinate klastreid sama lihtsalt, kui teeksite seda ühe arvutiga.
Tarkvara lihtsustab hajutatud rakenduste paigaldamist ja haldamist ning automatiseerib selliseid ülesandeid nagu ressursside haldamine, ajastamine ja protsessidevaheline suhtlus. D2iQ DC/OS-il põhineva klastri ja selle kaasnevate teenuste haldamine toimub keskse käsureaprogrammi (CLI) või veebiliidese (GUI) kaudu.
DC/OS eraldab klastri ressursid ning pakub jagatud teenuseid, nagu teenuste avastamine või pakettide haldus. Tarkvara põhikomponendid töötavad kaitstud keskkonnas – tuumakerneelis. Sinna kuuluvad Mesos-platvormi juht- ja agendiprogrammid, mis vastutavad ressursside jaotamise, protsesside eraldamise ja turbefunktsioonide eest.
- Mesos-master: Mesos-master on master-sõlmes töötav juhtprotsess. Mesos-masteri ülesanne on juhtida ressursside haldamist ja koordineerida agent-sõlmes täidetavaid ülesandeid (abstraktseid tööühikuid). Selleks jaotab Mesos-master ressursse registreeritud DC/OS-teenustele ja võtab vastu ressursiaruandeid Mesos-agentidelt.
- Mesos-agendid: Mesos-agendid on protsessid, mis töötavad agendi kontodel ja vastutavad masteri poolt jaotatud ülesannete täitmise eest. Mesos-agendid edastavad Mesos-masterile regulaarselt aruandeid klastris kättesaadavate ressursside kohta. Mesos-master edastab need edasi planeerijale (nt Marathon, Chronos või Cassandra). See otsustab, millist ülesannet millisel sõlmel täita. Seejärel täidetakse ülesanded isoleeritult konteineris.
Kõik muud süsteemikomponendid ning rakendused, mida Mesose agendid käitavad executori kaudu, töötavad kasutajaruumis. Standardse DC/OS-i installatsiooni põhikomponendid on admin-ruuter, Mesose DNS, hajutatud DNS-proksi, koormuse jaotaja Minuteman, ajastaja Marathon, Apache ZooKeeper ja Exhibitor.
- Admin-ruuter: admin-ruuter on spetsiaalselt konfigureeritud NGINX-põhine veebiserver, mis pakub DC/OS-teenuseid ning täidab keskse autentimise ja proksifunktsioone.
- Mesos DNS: süsteemikomponent Mesos DNS pakub teenuste avastamise funktsioone, mis võimaldavad klastri üksikutel teenustel ja rakendustel üksteist tuvastada keskse domeeninimede süsteemi (DNS) kaudu.
- Jaotatud DNS-proksi: jaotatud DNS-proksi on sisemine DNS-dispatcher.
- Minuteman: süsteemikomponent Minuteman toimib sisemise koormuse tasakaalustajana, mis töötab OSI viitemudeli transpordikihis (4. kiht).
- DC/OS Marathon: Marathon on Mesos-platvormi keskne komponent, mis toimib D2iQ DC/OS-is alglaadimissüsteemina (sarnaselt systemd-ga). Marathon käivitab ja jälgib DC/OS-i teenuseid ja rakendusi klastri keskkondades. Lisaks pakub tarkvara kõrge kättesaadavuse funktsioone, teenuste avastamist, koormuse jaotamist, tervisekontrolle ja graafilist veebiliidest.
- Apache ZooKeeper: Apache ZooKeeper on avatud lähtekoodiga tarkvarakomponent, mis pakub koordineerimisfunktsioone rakenduste töötamiseks ja juhtimiseks hajutatud süsteemides. ZooKeeperit kasutatakse D2iQ DC/OS-is kõigi installitud süsteemiteenuste koordineerimiseks.
- Exhibitor: Exhibitor on süsteemikomponent, mis installitakse ja konfigureeritakse automaatselt koos ZooKeeperiga igasse master-sõlme. Exhibitor pakub ka graafilist kasutajaliidest ZooKeeperi kasutajatele.
DC/OSi kaudu koondatud klastri ressurssidel on võimalik samaaegselt täita mitmesuguseid töökoormusi. See võimaldab näiteks suurandmesüsteemide, mikroteenuste või konteinerplatvormide (nt Hadoop, Spark ja Docker) paralleelset töötamist klastri operatsioonisüsteemis.
D2iQ Universumis on DC/OS-i jaoks saadaval avalik rakenduste kataloog. Selle abil saate paigaldada rakendusi nagu Spark, Cassandra, Chronos, Jenkins või Kafka lihtsalt graafilise kasutajaliidese kaudu klõpsates.
Millised Docker-tööriistad on turvalisuse tagamiseks olemas?
Kuigi konteinerites töötavad kapseldatud protsessid jagavad sama tuuma, kasutab Docker mitmeid meetodeid nende üksteisest eraldamiseks. Selleks kasutatakse tavaliselt Linuxi tuuma põhifunktsioone, nagu Cgroups ja Namespaces.
Konteinerid ei paku siiski veel sama tasemel isolatsiooni, mida on võimalik saavutada virtuaalmasinate abil. Hoolimata isolatsioonimeetodite kasutamisest on olulistele põhisüsteemidele, nagu Cgroups, ning /sys ja /proc kataloogides asuvatele tuumaliidestele võimalik juurde pääseda ka konteinerite kaudu.
Dockeri arendusmeeskond on tunnistanud, et need turvalisusega seotud probleemid takistavad konteineritehnoloogia kasutuselevõttu tootmiskeskkondades. Lisaks Linuxi tuuma põhilistele isoleerimismeetoditele toetavad Docker Engine’i uuemad versioonid ka raamistikke AppArmor, SELinux ja Seccomp, mis toimivad tuumressursside jaoks omamoodi tulemüürina.
- AppArmor: AppArmori abil reguleeritakse konteinerite juurdepääsuõigusi failisüsteemidele.
- SELinux: SELinux pakub keerukat reguleerimissüsteemi, mille abil on võimalik rakendada juurdepääsu kontrolli põhiressurssidele.
- Seccomp: Seccomp (Secure Computing Mode) jälgib süsteemikutsete käivitamist.
Lisaks nendele Docker-tööriistadele kasutab Docker ka Linuxi funktsioone, et piirata root-õigusi, millega Docker Engine konteinerid käivitab.
Lisaks on olemas ka muud turvalisusega seotud probleemid, mis puudutavad Docker-registri kaudu levitatavate rakenduskomponentide tarkvaralisi haavatavusi. Kuna põhimõtteliselt igaüks saab luua Docker-pilte ja teha need Docker Hubis kogukonnale avalikult kättesaadavaks, on pildi allalaadimisel oht, et teie süsteemi satub pahatahtlik kood. Enne rakenduse kasutuselevõttu peaksid Docker-kasutajad veenduma, et kogu pildis konteinerite käivitamiseks sisalduv kood pärineb usaldusväärsest allikast.
Docker pakub kinnitusprogrammi, mille abil tarkvaratootjad saavad oma Docker-pildid kontrollida ja kinnitada lasta. Selle kinnitusprogrammi abil soovib Docker arendajatele lihtsustada oma projektidele turvaliste tarkvara tarneahelate loomist. Lisaks kasutajate turvalisuse suurendamisele on programmi eesmärk pakkuda tarkvaraarendajatele võimalust eristada oma projekte paljude teiste kättesaadavate ressursside hulgast. Verifitseeritud pildid on märgistatud märgiga „Verified Publisher“ ja neile antakse muude eeliste kõrval ka kõrgem koht Docker Hubi otsingutulemustes.