Katera so najboljša orodja za Docker? Pregled
Obsežen ekosistem Dockerja razvijalcem ponuja številne možnosti za uvajanje aplikacij, upravljanje kontejnerjev in še več. Predstavili vam bomo najpomembnejša orodja Dockerja ter vam ponudili pregled najbolj priljubljenih projektov tretjih ponudnikov, ki razvijajo odprtokodna orodja za Docker.
Katera so najpomembnejša orodja/komponente Dockerja?
Danes je Docker veliko več kot le napredna platforma za upravljanje programskih kontejnerjev. Razvijalci so ustvarili vrsto raznovrstnih orodij za Docker, ki omogočajo lažje, hitrejše in prožnejše uvajanje aplikacij prek razpršene infrastrukture in oblačnih okolij. Poleg orodij za združevanje v grozde in usklajevanje obstaja tudi osrednja tržnica aplikacij ter orodje za upravljanje oblačnih virov.
Docker Engine
Ko razvijalci omenijo »Docker«, običajno mislijo na odprtokodno aplikacijo tipa odjemalec-strežnik, kipredstavlja osnovo platforme za kontejnerje. Ta aplikacija se imenuje Docker Engine. Osrednje komponente Docker Engine so Dockerjev demon, REST API in CLI (vmesnik ukazne vrstice), ki služi kot uporabniški vmesnik.
S to zasnovo lahko komuniciraš z Docker Engine prek ukazov v ukazni vrstici ter udobno upravljaš s slikami Docker, datotekami Docker in kontejnerji Docker iz terminala.

Podroben opis Docker Engine najdete v našem Dockerjevem vodniku za začetnike : Dockerjev vodnik: namestitev in prvi koraki.
Docker Hub
Docker Hub uporabnikom ponuja registrirano zbirko v oblaku, ki omogoča prenašanje, centralno upravljanje in izmenjavo Dockerjevih slik z drugimi uporabniki Dockerja. Registrirani uporabniki lahko Dockerjeve slike shranjujejo v javnih ali zasebnih repozitorijih. Za prenos javne slike (v Dockerjevi terminologiji znan kot »pulling« ) ni potreben uporabniški račun. Vgrajen mehanizem oznak omogoča razvrščanje slik po različicah.
Poleg javnih repozitorijev drugih uporabnikov Dockerja je v uradnih repozitorijih na Docker Hubu na voljo tudi veliko virov, ki jih ponuja razvojna ekipa Dockerja ter znani odprtokodni projekti. Med najbolj priljubljenimi Dockerjevimi slikami so spletni strežnik NGINX, podatkovna baza v pomnilniku Redis, zbirka Unix orodij BusyBox in distribucija Ubuntu Linux.

Organizacije so še ena pomembna funkcija Docker Huba, ki uporabnikom Dockerja omogoča ustvarjanje zasebnih repozitorijev, dostopnih izključno izbrani skupini ljudi. Dostopne pravice se znotraj organizacije upravljajo prek ekip in članstva v skupinah.
Docker Swarm
Docker Engine vsebuje vgrajeno funkcijo, ki uporabnikom omogoča upravljanje gostiteljev Dockerja v grozdih, imenovanih swarms. Zmožnosti upravljanja grozdov in usklajevanja, vgrajene v Docker Engine, temeljijo na orodju Swarmkit. Če uporabljate starejšo različico platforme za kontejnerje, je orodje Docker na voljo kot samostojna aplikacija.
Swarm je orodje za združevanje v grozde, ki je del jedra Dockerja; združuje skupino gostiteljev Dockerja v en sam virtualni gostitelj in omogoča dostop do REST API-ja Dockerja. Vsako orodje Dockerja, povezano z demonom Dockerja, lahko dostopa do Swarma in se prilagaja številu gostiteljev Dockerja. Z uporabniškim vmesnikom Docker Engine CLI lahko uporabniki ustvarjajo grozde, razporejajo aplikacije znotraj grozda in upravljajo z delovanjem grozda, ne da bi morali uporabljati dodatno programsko opremo za usklajevanje.
Docker-jevi motorji, združeni v grozde, delujejo v načinu swarm. To možnost izberite, če želite ustvariti nov grozd ali dodati Docker-jev gostitelj v obstoječi swarm. Posamezni Docker-jevi gostitelji v grozdu se imenujejo »vozlišča«. Vozlišča grozda lahko delujejo kot virtualni gostitelji na istem lokalnem sistemu, vendar se pogosteje uporablja oblačna arhitektura, pri kateri so posamezna vozlišča Docker-jevega swarma razporejena po različnih sistemih in infrastrukturah.
Programska oprema temelji na arhitekturi »master-worker«. Ko je treba naloge razporediti v roju, uporabniki posredujejo storitev upraviteljskemu vozlišču. Upravitelj je nato odgovoren za razporejanje kontejnerjev v gruči in deluje kot glavni uporabniški vmesnik za dostop do virov roja.
Vodstveno vozlišče pošilja posamezne enote, imenovane naloge, delovnim vozliščem.
- Storitve: storitve so osrednje strukture v Dockerjevih grozdih. Storitve opredeljujejo nalogo, ki se izvede v Dockerjevem grozdu. Storitve se nanašajo na skupino kontejnerjev, ki temeljijo na isti podobi. Pri ustvarjanju storitve uporabnik določi, katera podoba in kateri ukazi se uporabijo. Poleg tega storitve omogočajo prilagajanje obsega aplikacij. Uporabniki platforme Docker preprosto določijo, koliko kontejnerjev naj se za določeno storitev zažene.
- Naloge: za razporeditev storitev v grozdu jih upraviteljski vozlišče razdeli na posamezne delovne enote (naloge). Vsaka naloga vključuje Dockerjev kontejner ter ukaze, ki se v njem izvajajo.
Poleg upravljanja nadzora grozda in usklajevanja kontejnerjev lahko upravljavska vozlišča privzeto opravljajo tudi naloge delovnih vozlišč – razen če naloge teh vozlišč strogo omejite na upravljanje.
Na vsakem delovnem vozlišču teče program agenta. Ta sprejema naloge in zadevnemu glavnemu vozlišču posreduje poročila o stanju glede napredka prenesene naloge. Naslednja slika prikazuje shematski prikaz Docker Swarm:

Pri uvajanju Docker Swarm se uporabniki običajno zanašajo na Docker stroj.
Docker Compose
Docker Compose omogoča združevanje več kontejnerjev in njihovo izvajanje z enim samim ukazom. Osnovni element Compose je osrednja konfiguracijska datoteka, ki temelji na nagrajenem jeziku YAML. Sintaksa te datoteke Compose je podobna sintaksi odprtokodne programske opreme Vagrant, ki se uporablja pri ustvarjanju in konfiguraciji virtualnih strojev.
V datoteki docker-compose.yml lahko opredelite poljubno število programskih kontejnerjev, vključno z vsemi odvisnostmi, ter njihove medsebojne povezave. Takšne aplikacije z več kontejnerji se upravljajo po istem vzorcu kot posamezni programski kontejnerji. Za upravljanje celotnega življenjskega cikla aplikacije uporabite ukazdocker-compose v kombinaciji z želenim podukazom.
To orodje Docker se lahko enostavno vključi v grozd, ki temelji na Swarmu. Na ta način lahko aplikacije z več kontejnerji, ustvarjene s Compose, izvajate na porazdeljenih sistemih prav tako enostavno, kot bi jih na enem samem gostitelju Docker.
Še ena značilnost Docker Compose je vgrajen mehanizem za prilagajanje zmogljivosti. S tem orodjem za usklajevanje lahko prek ukazne vrstice enostavno določite, koliko kontejnerjev želite zagnati za določeno storitev.
Katera orodja za Docker drugih ponudnikov so na voljo?
Poleg lastnih razvojnih dosežkov podjetja Docker Inc. obstajajo tudi različna programska orodja in platforme zunanjih ponudnikov, ki ponujajo vmesnike za Docker Engine ali so bila posebej razvita za to priljubljeno platformo za kontejnerje. V ekosistemu Dockerja so med najbolj priljubljenimi odprtokodnimi projekti orodje za orkestracijo Kubernetes, orodje za upravljanje grozdov Shipyard, rešitev za pošiljanje več kontejnerjev Panamax, platforma za neprekinjeno integracijo Drone, operacijski sistem v oblaku OpenStack in operacijski sistem za podatkovne centre D2iQ DC/OS, ki temelji na upravitelju grozdov Mesos.
Kubernetes
Dockerju ni vedno mogoče razviti lastnih orodij za orkestracijo, kot sta Swarm in Compose. Zato različna podjetja že leta vlagajo v lastni razvoj orodij, prilagojenih potrebam strank, ki so namenjena lažjemu upravljanju kontejnerske platforme v velikih, razpršenih infrastrukturah. Med najbolj priljubljenimi rešitvami te vrste je odprtokodni projekt Kubernetes.
Kubernetes je upravitelj grozdov za aplikacije, ki temeljijo na kontejnerjih. Cilj Kubernetesa je avtomatizacija aplikacij v grozdu. Za to orodje za usklajevanje uporablja kot vmesnike za upravljanje REST-API, program za ukazno vrstico in grafični spletni vmesnik. Prek teh vmesnikov je mogoče sprožiti avtomatizacije in zahtevati poročila o stanju. Kubernetes lahko uporabite za:
- izvajanje fotografij na podlagi kontejnerjev v grozdu,
- namestiti in upravljati aplikacije v porazdeljenih sistemih,
- skalirati aplikacije ter
- čim bolje izkoristiti strojno opremo.
V ta namen Kubernetes združuje kontejnerje v logične enote, imenovane podi. Podi predstavljajo osnovne enote upravitelja grozda, ki jih je mogoče v grozdu razporediti z načrtovanjem.
Podobno kot Docker Swarm tudi Kubernetes temelji na arhitekturi »master-worker«. Skupina je sestavljena iz glavnega strežnika Kubernetes in različnih delavcev, ki se imenujejo tudi vozlišča Kubernetes (ali minioni). Glavni strežnik Kubernetes deluje kot osrednja nadzorna ploskev v skupini in je sestavljen iz štirih osnovnih komponent, ki omogočajo neposredno komunikacijo v skupini in razporeditev nalog. Glavni strežnik Kubernetes sestavljajo strežnik API, konfiguracijski pomnilnik etcd, razporejevalnik in upravitelj krmilnika.
- API strežnik: vse avtomatizacije v Kubernetesovem klastru se sprožijo prek REST-API-ja z uporabo API strežnika. Ta deluje kot osrednji vmesnik za upravljanje v klastru.
- etcd: odprtokodni konfiguracijski pomnilnik etcd si lahko predstavljate kot pomnilnik Kubernetesovega klastra. Key Value Store, ki ga je CoreOS razvil posebej za porazdeljene sisteme, shranjuje konfiguracijske podatke in jih naredi dostopne vsakemu vozlišču v klastru. Trenutno stanje klastra je mogoče kadarkoli upravljati prek etcd.
- Scheduler: scheduler je odgovoren za razporeditev skupin kontejnerjev (podov) v klastru. Določi zahteve po virih za pod in jih nato uskladi z razpoložljivimi viri posameznih vozlišč v klastru.
- Upravitelj krmilnika: upravitelj krmilnika je storitev glavnega strežnika Kubernetes in nadzira usklajevanje z uravnavanjem stanja klastra in izvajanjem rutinskih nalog. Glavna naloga upravitelja krmilnika je zagotoviti, da stanje klastra ustreza opredeljenemu ciljnemu stanju.
Vse komponente glavnega strežnika Kubernetes se lahko nahajajo na istem gostitelju ali pa so razporejene po več glavnih gostiteljih znotraj grozda z visoko razpoložljivostjo.
Medtem ko je glavni strežnik Kubernetes odgovoren za usklajevanje, se podi, razporejeni v gruči, izvajajo na gostiteljih, tj. vozliščih Kubernetes, ki so podrejeni glavnemu strežniku. Za to mora na vsakem vozlišču Kubernetes teči pogon za kontejnerje. Čeprav je Docker dejanski standard, Kubernetes ni omejen na uporabo določenega pogona za kontejnerje.
Poleg kontejnerskega motorja vozlišča Kubernetes vključujejo naslednje komponente:
- kubelet: kubelet je agent, ki teče na vsakem vozlišču Kubernetesa in se uporablja za nadzor in upravljanje vozlišča. Kot osrednja kontaktna točka vsakega vozlišča je kubelet povezan z glavnim strežnikom Kubernetesa in zagotavlja prenos informacij do nadzorne ravni ter njihov sprejem iz nje.
- kube-proxy: poleg tega na vsakem vozlišču Kubernetesa teče proxy storitev kube-proxy. Ta zagotavlja, da se zahtevki iz zunanjega okolja posredujejo ustreznim kontejnerjem, ter zagotavlja storitve uporabnikom aplikacij, ki temeljijo na kontejnerjih. Kube-proxy ponuja tudi osnovno porazdelitev obremenitve.
Naslednja slika prikazuje shematski prikaz arhitekture glavnega vozlišča, na kateri temelji platforma za orkestracijo Kubernetes:

Poleg osrednjega projekta Kubernetes obstajajo tudi številna orodja in razširitve, ki omogočajo dodajanje dodatnih funkcionalnosti platformi za orkestracijo. Najbolj priljubljena so orodja za spremljanje in diagnostiko napak, kot so Prometheus, Weave Scope in sysdig, ter upravitelj paketov Helm. Na voljo so tudi vtičniki za Apache Maven in Gradle ter Java API, ki omogoča daljinsko upravljanje Kubernetesa.
Ladjedelnica
Shipyard je skupnostno razvita rešitev za upravljanje, ki temelji na platformi Swarm in uporabnikom omogoča upravljanje virov Dockerja, kot so kontejnerji, slike, gostitelji in zasebni registri, prek grafičnega uporabniškega vmesnika. Na voljo je kot spletna aplikacija, dostopna prek brskalnika. Poleg funkcij za upravljanje grozdov, do katerih je mogoče dostopati prek centralnega spletnega vmesnika, Shipyard ponuja tudi avtentifikacijo uporabnikov in nadzor dostopa na podlagi vlog.
Programska oprema je 100-odstotno združljiva z oddaljenim API-jem Dockerja in za shranjevanje podatkov o uporabniških računih, naslovih in dogodkih uporablja odprtokodno NoSQL-bazo podatkov RethinkDB. Programska oprema temelji na orodju za upravljanje grozdov Citadel in je sestavljena iz treh glavnih komponent: krmilnika, API-ja in uporabniškega vmesnika.
- Shipyard Controller: Shipyard Controller je osrednji del orodja za upravljanje Shipyard. Shipyard Controller komunicira z RethinkDB za shranjevanje podatkov ter omogoča naslavljanje posameznih gostiteljev v Dockerjevem klastru in upravljanje dogodkov.
- Shipyard API: Shipyard API temelji na REST. Vse funkcije orodja za upravljanje se nadzorujejo prek Shipyard API.
- Uporabniški vmesnik (UI) Shipyard: UI Shipyard je aplikacija AngularJS, ki uporabnikom v spletnem brskalniku ponuja grafični uporabniški vmesnik za upravljanje Dockerjevih grozdov. Vse interakcije v uporabniškem vmesniku potekajo prek API-ja Shipyard.
Več informacij o odprtokodnem projektu najdete na uradni spletni strani Shipyard.
Panamax
Razvijalci odprtokodnega projekta Panamax si prizadevajo poenostaviti uvajanje aplikacij z več kontejnerji. To brezplačno orodje uporabnikom ponuja grafični uporabniški vmesnik, ki omogoča enostavno razvijanje, uvajanje in distribucijo kompleksnih aplikacij, temelječih na Dockerjevih kontejnerjih, s pomočjo funkcije »povleci in spusti«.
Panamax omogoča shranjevanje kompleksnih aplikacij z več kontejnerji kot predloge aplikacij ter njihovo razširjanje v gručastih arhitekturah z enim samim klikom. Z uporabo integrirane tržnice aplikacij, ki je gostovana na GitHubu, je mogoče predloge za lastne aplikacije shraniti v Git-repozitorijih in jih dati na voljo drugim uporabnikom.
Osnovne komponente arhitekture Panamax lahko razdelimo v dve skupini: lokalnega odjemalca Panamax in poljubno število oddaljenih ciljnih sistemov.
Lokalni odjemalec Panamax je osrednja komponenta tega orodja Docker. Deluje na lokalnem sistemu in omogoča ustvarjanje kompleksnih aplikacij, ki temeljijo na kontejnerjih. Lokalni odjemalec sestavljajo naslednje komponente:
- CoreOS: za namestitev lokalnega odjemalca Panamax je kot gostiteljski sistem potrebna distribucija Linuxa CoreOS, ki je bila posebej zasnovana za programske kontejnerje. Odjemalec Panamax nato deluje kot Dockerjev kontejner v sistemu CoreOS. Poleg funkcij Dockerja imajo uporabniki dostop do različnih funkcij CoreOS-a. Mednje sodijo med drugim Fleet in Journalctl:
- Fleet: namesto neposredne integracije z Dockerjem odjemalec Panamax za usklajevanje svojih kontejnerjev uporablja upravitelja grozdov Fleet. Fleet je upravitelj grozdov, ki v računalniških grozdih nadzira Linuxovega demon systemd.
- Journalctl: odjemalec Panamax uporablja Journalctl za zahtevanje dnevniških sporočil iz dnevnika Linuxovega sistemskega upravitelja systemd.
- Namestitveni program lokalnega odjemalca: namestitveni program lokalnega odjemalca vsebuje vse komponente, potrebne za namestitev odjemalca Panamax na lokalnem sistemu.
- Lokalni agent Panamax: osrednja komponenta lokalnega odjemalca je lokalni agent. Ta je prek API-ja Panamax povezan z različnimi drugimi komponentami in odvisnostmi. Mednje spadajo lokalni gostitelj Docker, uporabniški vmesnik Panamax, zunanji registri in oddaljeni agenti ciljev razporeditve v gruči. Lokalni agent prek API-ja Panamax komunicira z naslednjimi programskimi vmesniki na lokalnem sistemu, da izmenjuje informacije o zagnanih aplikacijah:
- Oddaljeni API Docker: Panamax prek oddaljenega API-ja Docker išče slike na lokalnem sistemu in pridobiva informacije o zagnanih kontejnerjih.
- API etcd: datoteke se prenesejo v demon CoreOS Fleet prek API-ja etcd.
- systemd-journal-gatewayd.services: Panamax pridobi izhod dnevnika zagnanih storitev prek systemd-journal-gatewayd.services.
Poleg tega vmesnik API Panamax omogoča tudi povezovanje z različnimi zunanjimi vmesniki API.
- API registra Docker: Panamax pridobi oznake slik iz registra Docker prek API-ja registra Docker.
- GitHub API: Panamax naloži predloge iz repozitorija GitHub z uporabo API-ja GitHub.
- API KissMetrics: API KissMetrics zbira podatke o predlogah, ki jih uporabniki izvajajo.
- Uporabniški vmesnik Panamax: uporabniški vmesnik Panamax deluje kot uporabniški vmesnik v lokalnem sistemu in omogoča uporabnikom nadzor nad orodjem Docker prek grafičnega vmesnika. Uporabniški vnosi se prek API-ja Panamax neposredno posredujejo lokalnemu agentu. Uporabniški vmesnik Panamax temelji na CTL Base UI Kit, knjižnici komponent uporabniškega vmesnika za spletne projekte podjetja CenturyLink.
V terminologiji Panamax se vsak vozlišče v Dockerjevem klastru, ki ne opravlja upravljavskih nalog, imenuje oddaljeni cilj razporeditve. Cilji razporeditve so sestavljeni iz Dockerjevega gostitelja, ki je nastavljen za razporeditev predlog Panamax s pomočjo naslednjih komponent:
- Namestitveni program za ciljno okolje: namestitveni program za ciljno okolje zažene gostitelj Docker, opremljen z oddaljenim agentom Panamax in adapterjem za orkestracijo.
- Oddaljeni agent Panamax: če je nameščen oddaljeni agent Panamax, se aplikacije lahko distribuirajo prek lokalnega odjemalca Panamax na katero koli želeno končno točko v gruči. Oddaljeni agent Panamax teče kot Docker-kontejner na vsakem cilju razporeditve v gruči.
- Panamaxov adapter za orkestracijo: v adapterju za orkestracijo je programska logika za vsako orodje za orkestracijo, ki je na voljo za Panamax, zagotovljena v neodvisni plasti adapterja. Zaradi tega imajo uporabniki možnost, da vedno izberejo natančno tehnologijo orkestracije, ki jo podpira njihovo ciljno okolje. Vnaprej konfigurirani adapterji vključujejo Kubernetes in Fleet:
- Panamaxov adapter za Kubernetes: v kombinaciji z oddaljenim agentom Panamax omogoča adapter za Kubernetes distribucijo predlog Panamax v grozdih Kubernetes.
- Panamaxov adapter Fleet: v kombinaciji z oddaljenim agentom Panamax adapter Fleet omogoča distribucijo predlog Panamax v grozdih, ki se upravljajo s pomočjo upravitelja grozdov Fleet.
Naslednja slika prikazuje medsebojno delovanje posameznih komponent Panamax v Dockerjevem klastru:

Orodje za upravljanje kontejnerjev Panamax, ki temelji na CoreOS, uporabnikom prek grafičnega uporabniškega vmesnika ponuja vrsto standardnih tehnologij za usklajevanje kontejnerjev, pa tudi možnost enostavnega upravljanja zapletenih aplikacij z več kontejnerji v gručnih arhitekturah s pomočjo katerega koli sistema (npr. lastnega prenosnega računalnika).
Z javnim repozitorijem predlog v okviru Panamaxa imajo uporabniki Panamaxa prek GitHuba dostop do javne knjižnice predlog z različnimi viri.
Dron
Drone je enostavna platforma za neprekinjeno integracijo z minimalnimi zahtevami. S tem orodjem Docker lahko samodejno naložite svojo najnovejšo različico iz repozitorija Git, kot je GitHub, in jo preizkusite v izoliranih kontejnerjih Docker. Izvajate lahko kateri koli niz testov ter pošiljate poročila in obvestila o stanju prek e-pošte. Za vsak test programske opreme se ustvari nov kontejner, ki temelji na slikah iz javnega registra Docker. To pomeni, da se kot okolje za testiranje kode lahko uporabi katerakoli javno dostopna slika Docker.
Drone je integriran v Docker in ga podpirajo različni programski jeziki, kot so PHP, Node.js, Ruby, Go in Python. Edina resnična odvisnost je platforma za kontejnerje. S pomočjo Drone lahko ustvarite svojo osebno platformo za neprekinjeno integracijo na katerem koli sistemu, na katerega je mogoče namestiti Docker. Drone podpira različne repozitorije za nadzor različic, navodila za standardno namestitev z integracijo GitHub pa najdete na spletni strani odprtokodnega projekta na naslovu readme.drone.io.
Upravljanje platforme za neprekinjeno integracijo poteka prek spletnega vmesnika. Tu lahko naložite različice programske opreme iz katerega koli Git-repozitorija, jih združite v aplikacije in rezultat izvedete v vnaprej določenem testnem okolju. Za to se opredeli datoteka .drone.yml, ki določa, kako ustvariti in izvesti aplikacijo za vsak test programske opreme.
Uporabnikom dronov je na voljo odprtokodna rešitev za upravljanje integracij (CI), ki združuje prednosti alternativnih izdelkov, kot sta Travis in Jenkins, v uporabniku prijazno aplikacijo.
OpenStack
Ko gre za vzpostavljanje in upravljanje odprtokodnih oblačnih infrastruktur, je odprtokodni oblačni operacijski sistem OpenStack najboljša izbira.
Z OpenStackom lahko upravljate računalniške, shranjevalne in omrežne vire prek osrednje nadzorne plošče ter jih končnim uporabnikom omogočite prek spletnega vmesnika.
Operacijski sistem v oblaku temelji na modularni arhitekturi, ki jo sestavlja več komponent:
- Zun (storitev za kontejnerje): Zun je storitev za kontejnerje v okviru OpenStacka, ki omogoča enostavno uvajanje in upravljanje aplikacij v kontejnerjih v oblaku OpenStack. Namen Zuna je omogočiti uporabnikom upravljanje kontejnerjev prek REST API, ne da bi morali upravljati strežnike ali grozde. Za delovanje Zuna potrebujete tri druge storitve OpenStack, in sicer Keystone, Neutron in kryr-libnetwork. Funkcionalnost Zuna je mogoče razširiti tudi z dodatnimi storitvami OpenStack, kot sta Cinder in Glance.
- Neutron (omrežna komponenta): Neutron (prej Quantum) je prenosljiva, skalabilna sistemna komponenta, podprta z API, ki se uporablja za nadzor omrežja. Modul zagotavlja vmesnik za kompleksne omrežne topologije in podpira različne vtičnike, prek katerih je mogoče integrirati razširjene omrežne funkcije.
- kuryr-libnetwork (gonilnik Docker): kuryr-libnetwork je gonilnik, ki deluje kot vmesnik med Dockerjem in Neutronom.
- Cinder (blokovno shranjevanje): Cinder je vzdevek komponente v arhitekturi OpenStack, ki zagotavlja trajno blokovno shranjevanje za delovanje VM. Modul zagotavlja virtualno shranjevanje prek samopostrežnega API-ja. S tem lahko končni uporabniki uporabljajo shranjevalne vire, ne da bi vedeli, katera naprava zagotavlja shranjevanje.
- Keystone (storitev identitete): Keystone zagotavlja uporabnikom OpenStack centralno storitev identitete. Modul deluje kot sistem avtentifikacije in dovoljenj med posameznimi komponentami OpenStack. Dostop do projektov v oblaku urejajo najemniki. Vsak najemnik predstavlja uporabnika, pri čemer je mogoče opredeliti več uporabniških dostopov z različnimi pravicami.
- Glance (storitev za slike): z modulom Glance OpenStack zagotavlja storitev, ki omogoča shranjevanje in pridobivanje slik VM.
Več informacij o komponentah in storitvah OpenStacka najdete v našem članku o OpenStacku.
Poleg zgoraj navedenih komponent je mogoče arhitekturo OpenStack razširiti z različnimi moduli. O različnih izbirnih modulih si lahko preberete na spletni strani OpenStack.
D2iQ DC/OS
DC/OS (Distributed Cloud Operating System) je odprtokodna programska oprema za upravljanje porazdeljenih sistemov, ki jo je razvila družba D2iQ Inc. (prej Mesosphere). Projekt temelji na odprtokodnem upravitelju grozdov Apache Mesos in je operacijski sistem za podatkovne centre. Izvorna koda je uporabnikom na voljo pod licenco Apache različice 2 v repozitorijih DC/OS na GitHubu. Poslovna različica programske opreme je na voljo tudi na d2iq.com. Obsežna dokumentacija projekta je na voljo na dcos.io.
DC/OS si lahko predstavljate kot distribucijo Mesosa, ki vam ponuja vse funkcije upravitelja grozda (prek centralnega uporabniškega vmesnika) in znatno razširja zmogljivosti Mesosa.
DC/OS uporablja jedro razpršenega sistema platforme Mesos. To omogoča združevanje virov celotnega podatkovnega centra in njihovo upravljanje v obliki združenega sistema, podobnega enemu samemu logičnemu strežniku. Na ta način lahko celotne skupine fizičnih ali virtualnih strojev upravljate enako enostavno, kot bi upravljali en sam računalnik.
Programska oprema poenostavlja namestitev in upravljanje porazdeljenih aplikacij ter avtomatizira naloge, kot so upravljanje virov, načrtovanje in komunikacija med procesi. Upravljanje grozda, ki temelji na sistemu D2iQ DC/OS, ter vključenih storitev poteka prek centralnega programa za ukazno vrstico (CLI) ali spletnega vmesnika (GUI).
DC/OS ločuje vire v grozdu in zagotavlja skupne storitve, kot sta odkrivanje storitev ali upravljanje paketov. Osnovne komponente programske opreme tečejo v zaščitenem območju – jedru sistema. To vključuje glavni program in programe agentov platforme Mesos, ki so odgovorni za dodeljevanje virov, ločevanje procesov in varnostne funkcije.
- Mesosov glavni strežnik: Mesosov glavni strežnik je glavni proces, ki teče na glavnem vozlišču. Naloga Mesosovega glavnega strežnika je upravljanje virov in usklajevanje nalog (abstraktnih delovnih enot), ki se izvajajo na vozlišču agenta. V ta namen Mesosov glavni strežnik razporeja vire med registrirane storitve DC/OS in sprejema poročila o virih od Mesosovih agentov.
- Mesos agenti: Mesos agenti so procesi, ki tečejo na agentnih računih in so odgovorni za izvajanje nalog, ki jih razporedi glavni proces. Mesos agenti redno pošiljajo poročila o razpoložljivih virih v gruči glavnemu procesu Mesos. Glavni proces Mesos jih posreduje razporejevalniku (npr. Marathon, Chronos ali Cassandra). Ta odloči, katera naloga se bo izvajala na katerem vozlišču. Naloge se nato izvajajo v kontejnerju na izoliran način.
Vse ostale sistemske komponente ter aplikacije, ki jih prek izvajalca (executor) izvajajo agenti Mesos, tečejo v uporabniškem prostoru. Osnovne komponente standardne namestitve DC/OS so upraviteljski usmerjevalnik, Mesos DNS, porazdeljeni DNS-proksi, porazdeljevalnik obremenitve Minuteman, razporejevalnik Marathon, Apache ZooKeeper in Exhibitor.
- Upraviteljski usmerjevalnik: upraviteljski usmerjevalnik je posebej konfiguriran spletni strežnik na podlagi NGINX, ki zagotavlja storitve DC/OS ter funkcije centralnega avtentificiranja in proxyja.
- Mesos DNS: sistemska komponenta Mesos DNS zagotavlja funkcije odkrivanja storitev, ki omogočajo posameznim storitvam in aplikacijam v gruči, da se med seboj prepoznajo prek centralnega sistema domenskih imen (DNS).
- Distributed DNS proxy: distributed DNS proxy je notranji razporejevalnik DNS.
- Minuteman: sistemski komponent Minuteman deluje kot notranji porazdeljevalnik obremenitve, ki deluje na transportni plasti (plast 4) referenčnega modela OSI.
- DC/OS Marathon: Marathon je osrednja komponenta platforme Mesos, ki v D2iQ DC/OS deluje kot sistem init (podobno kot systemd). Marathon zažene in nadzira storitve in aplikacije DC/OS v okoljih grozdov. Poleg tega programska oprema zagotavlja funkcije visoke razpoložljivosti, odkrivanje storitev, porazdeljevanje obremenitve, preverjanje delovanja in grafični spletni vmesnik.
- Apache ZooKeeper: Apache ZooKeeper je odprtokodna programska komponenta, ki zagotavlja koordinacijske funkcije za delovanje in nadzor aplikacij v porazdeljenih sistemih. ZooKeeper se v D2iQ DC/OS uporablja za koordinacijo vseh nameščenih sistemskih storitev.
- Exhibitor: Exhibitor je sistemska komponenta, ki se samodejno namesti in konfigurira z ZooKeeperjem na vsakem glavnem vozlišču. Exhibitor zagotavlja tudi grafični uporabniški vmesnik za uporabnike ZooKeeperja.
Na virih grozda, združenih prek DC/OS, je mogoče hkrati izvajati različne delovne obremenitve. To na primer omogoča vzporedno delovanje sistemov za obdelavo velikih podatkov, mikrostoritev ali platform za kontejnerje, kot so Hadoop, Spark in Docker, v okviru operacijskega sistema grozda.
V okviru D2iQ Universe je za DC/OS na voljo javni katalog aplikacij. S pomočjo tega lahko aplikacije, kot so Spark, Cassandra, Chronos, Jenkins ali Kafka, namestite s preprostim klikom v grafičnem uporabniškem vmesniku.
Katera orodja Dockerja so na voljo za varnost?
Čeprav si zaprti procesi, ki tečejo v kontejnerjih, delijo isto jedro, Docker uporablja vrsto tehnik, da jih med seboj loči. Za to se običajno uporabljajo osnovne funkcije jedra Linux, kot so Cgroups in Namespaces.
Vendar pa kontejnerji še vedno ne zagotavljajo enake stopnje izolacije, kot jo je mogoče doseči z virtualnimi stroji. Kljub uporabi tehnik izolacije je mogoče prek kontejnerjev dostopati do pomembnih osnovnih podsistemov, kot so Cgroups, ter do vmesnikov jedra v imenikih /sys in /proc.
Razvojna ekipa Dockerja se zaveda, da te varnostne skrbi predstavljajo oviro za uvedbo tehnologije kontejnerjev v produkcijske sisteme. Poleg osnovnih tehnik izolacije jedra Linuxa novejše različice Docker Engine podpirajo tudi okvire AppArmor, SELinux in Seccomp, ki delujejo kot nekakšen požarni zid za ključne vire.
- AppArmor: z AppArmorjem se urejajo dostopne pravice kontejnerjev do datotečnih sistemov.
- SELinux: SELinux zagotavlja kompleksni regulativni sistem, v katerem je mogoče izvajati nadzor dostopa do ključnih virov.
- Seccomp: Seccomp (Secure Computing Mode) nadzoruje izvajanje sistemskih klicev.
Poleg teh orodij Dockerja Docker uporablja tudi funkcije sistema Linux za omejevanje pravic uporabnika root, s katerimi Docker Engine zažene kontejnerje.
Obstajajo tudi druge varnostne skrbi v zvezi z ranljivostmi programske opreme v komponentah aplikacij, ki jih razširja Dockerjev register. Ker lahko v bistvu kdorkoli ustvari Dockerjeve slike in jih v Docker Hubu naredi javno dostopne skupnosti, obstaja tveganje, da se ob prenosu slike v vaš sistem vnese zlonameren kod. Pred namestitvijo aplikacije morajo uporabniki Dockerja poskrbeti, da vsa koda v sliki, namenjena za izvajanje kontejnerjev, izvira iz zanesljivega vira.
Docker ponuja program za preverjanje, s katerim lahko ponudniki programske opreme dajo svoje slike Docker v pregled in preverjanje. S tem programom za preverjanje želi Docker razvijalcem olajšati vzpostavljanje varnih dobavnih verig programske opreme za njihove projekte. Poleg povečanja varnosti za uporabnike je cilj programa ponuditi razvijalcem programske opreme način, kako svoje projekte ločiti od množice drugih razpoložljivih virov. Preverjene slike so označene z značko »Verified Publisher« in poleg drugih ugodnosti dobijo višjo uvrstitev v rezultatih iskanja v Docker Hubu.