Kokie yra geriausi „Docker“ įrankiai? Apžvalga
Išsami „Docker“ ekosistema suteikia programuotojams daugybę galimybių diegti programas, valdyti konteinerius ir ne tik. Aptarsime svarbiausius „Docker“ įrankius ir pateiksime apžvalgą populiariausių trečiųjų šalių projektų, kuriuose kuriamos atvirojo kodo „Docker“ priemonės.
Kokie yra pagrindiniai „Docker“ įrankiai ir komponentai?
Šiandien „Docker“ yra kur kas daugiau nei tik sudėtinga programinės įrangos konteinerių valdymo platforma. Kūrėjai sukūrė įvairių „Docker“ įrankių, kad programų diegimas pasitelkiant paskirstytąją infrastruktūrą ir debesų aplinką taptų lengvesnis, greitesnis ir lankstesnis. Be klasterizavimo ir koordinavimo įrankių, yra ir centrinė programų parduotuvė bei įrankis debesų ištekliams valdyti.
„Docker“ variklis
Kai programuotojai sako „Docker“, jie paprastai turi omenyje atvirojo kodo klientas-serveris programą, kurisudaro konteinerių platformos pagrindą. Ši programa vadinama „Docker Engine“. Pagrindiniai „Docker Engine“ komponentai yra „Docker“ demonas, REST API ir CLI (komandinės eilutės sąsaja), kuri atlieka vartotojo sąsajos funkciją.
Naudodami šią sistemą, galite bendrauti su „Docker Engine“ per komandinės eilutės komandas ir patogiai valdyti „Docker“ atvaizdus, „Docker“ failus bei „Docker“ konteinerius iš terminalo.

Išsamų „Docker Engine“ aprašymą rasite mūsų „Docker“ pamokėlėje pradedantiesiems „Docker“ pamokėlė: įdiegimas ir pirmieji žingsniai.
„Docker Hub“
„Docker Hub“ vartotojams siūlo debesų technologijomis pagrįstą registrą, kuris leidžia atsisiųsti „Docker“ vaizdus, juos centralizuotai valdyti ir dalytis su kitais „Docker“ vartotojais. Registruoti vartotojai gali saugoti „Docker“ vaizdus viešose arba privačiose saugyklose. Norint atsisiųsti viešą vaizdą (pagal „Docker“ terminologiją vadinamą „pulling“ ), vartotojo paskyros nereikia. Integruota žymių sistema leidžia tvarkyti vaizdų versijas.
Be kitų „Docker“ naudotojų viešųjų saugyklų, oficialiose „Docker Hub“ saugyklose galima rasti ir daugybę išteklių, kuriuos pateikia „Docker“ kūrėjų komanda bei žinomi atvirojo kodo projektai. Tarp populiariausių „Docker“ vaizdų yra „NGINX“ žiniatinklio serveris, atminties duomenų bazė „Redis“, „Unix“ įrankių rinkinys „BusyBox“ ir „Ubuntu“ Linux distribucija.

Organizacijos yra dar viena svarbi „Docker Hub“ funkcija, leidžianti „Docker“ vartotojams kurti privačius repozitorijus, prieinamus tik pasirinktam žmonių ratui. Prieigos teisės organizacijoje valdomos naudojant komandas ir narystę grupėse.
„Docker Swarm“
„Docker Engine“ turi integruotą funkciją, leidžiančią vartotojams valdyti „Docker“ šeimininkus klasteriuose, vadinamuose „swarms“. Į „Docker Engine“ integruotos klasterių valdymo ir koordinavimo funkcijos yra pagrįstos „Swarmkit“ įrankių rinkiniu. Jei naudojate senesnę konteinerių platformos versiją, „Docker“ įrankis yra prieinamas kaip atskira programa.
„Swarm“ – tai integruota „Docker“ klasterizavimo priemonė, kuri sujungia „Docker“ įrenginių grupę į vieną virtualų įrenginį ir teikia „Docker“ REST API paslaugas. Bet kuri su „Docker“ demonu susieta „Docker“ priemonė gali prisijungti prie „Swarm“ ir išplėsti savo veiklą bet kokiam „Docker“ įrenginių skaičiui. Naudodamiesi „Docker Engine“ komandinės eilutės sąsaja, vartotojai gali kurti „Swarm“ klasterius, paskirstyti programas klasteryje ir valdyti klasterio veikimą be papildomos koordinavimo programinės įrangos.
Į klasterius sujungti „Docker“ varikliai veikia „Swarm“ režimu. Pasirinkite šią parinktį, jei norite sukurti naują klasterį arba pridėti „Docker“ kompiuterį prie esamo „Swarm“ klasterio. Atskiri „Docker“ kompiuteriai klasteryje vadinami „mazgais“. Klasterio mazgai gali veikti kaip virtualūs kompiuteriai toje pačioje vietinėje sistemoje, tačiau dažniau naudojamas debesų kompiuterijos modelis, kai atskiri „Docker Swarm“ mazgai yra paskirstyti skirtingose sistemose ir infrastruktūrose.
Programinė įranga pagrįsta „master-worker“ architektūra. Kai užduotis reikia paskirstyti „Swarm“ sistemoje, vartotojai perduoda paslaugą valdymo mazgui. Valdymo mazgas tada yra atsakingas už konteinerių planavimą klasteryje ir veikia kaip pagrindinė vartotojo sąsaja, skirta prieigai prie „Swarm“ išteklių.
Valdymo mazgas siunčia atskirus elementus, vadinamus užduotimis, į darbo mazgus.
- Paslaugos: paslaugos yra pagrindinės „Docker“ klasterių struktūros. Paslauga apibrėžia užduotį, kuri turi būti įvykdyta „Docker“ klasteryje. Paslauga apima konteinerių, sukurtų remiantis tuo pačiu atvaizdu, grupę. Kurdamas paslaugą, vartotojas nurodo, koks atvaizdas ir kokios komandos bus naudojamos. Be to, paslaugos suteikia galimybę mastelinti programas. „Docker“ platformos vartotojai tiesiog nurodo, kiek konteinerių turi būti paleista paslaugai.
- Užduotys: siekiant paskirstyti paslaugas klasteryje, valdytojo mazgas jas suskirsto į atskiras darbo vienetus (užduotis). Kiekviena užduotis apima „Docker“ konteinerį bei jame vykdomas komandas.
Be klasterių valdymo ir konteinerių koordinavimo, pagal numatytuosius nustatymus valdytojų mazgai taip pat gali atlikti darbininkų mazgų funkcijas – nebent šių mazgų užduotis griežtai apribotumėte tik valdymo funkcijomis.
Kiekviename darbo mazge veikia agento programa. Ji priima užduotis ir atitinkamam pagrindiniam mazgui teikia ataskaitas apie perduotos užduoties vykdymo eigą. Toliau pateiktame paveikslėlyje pateiktas „Docker Swarm“ schematiškas vaizdas:

Diegdami „Docker Swarm“, vartotojai paprastai naudoja „Docker“ kompiuterį.
„Docker Compose“
„Docker Compose“ leidžia sujungti kelis konteinerius ir juos paleisti vienu komandomis. Pagrindinis „Compose“ elementas yra centrinis valdymo failas, sukurtas remiantis apdovanojimus pelniusia YAML kalba. Šio „Compose“ failo sintaksė yra panaši į atvirojo kodo programinės įrangos „Vagrant“ sintaksę, kuri naudojama kuriant ir konfigūruojant virtualias mašinas.
Failo „docker-compose.yml“ galite apibrėžti bet kokį skaičių programinės įrangos konteinerių, įskaitant visas priklausomybes, taip pat jų tarpusavio ryšius. Tokios iš kelių konteinerių sudarytos programos valdomos pagal tą patį modelį kaip ir atskiri programinės įrangos konteineriai. Naudokite komandą„docker-compose“** kartu su norima pakomanda, kad valdytumėte visą programos gyvavimo ciklą.
Šią „Docker“ priemonę galima lengvai integruoti į „Swarm“ pagrįstą klasterį. Tokiu būdu „Compose“ sukurtas daugiakonteinerines programas galėsite paleisti paskirstytose sistemose taip pat lengvai, kaip ir viename „Docker“ serveryje.
Dar viena „Docker Compose“ funkcija – integruotas mastelio keitimo mechanizmas. Naudodamiesi šiuo koordinavimo įrankiu, galite patogiai pasinaudoti komandinės eilutės programa ir nustatyti, kiek konteinerių norite paleisti konkrečiai paslaugai.
Kokios yra trečiųjų šalių „Docker“ priemonės?
Be „Docker Inc.“ vidinių kūrinių, yra įvairių išorinių tiekėjų programinės įrangos priemonių ir platformų, kurios teikia sąsajas su „Docker Engine“ arba buvo specialiai sukurtos šiai populiariam konteinerių platformai. „Docker“ ekosistemoje populiariausi atvirojo kodo projektai yra orkestravimo įrankis „Kubernetes“, klasterių valdymo įrankis „Shipyard“, daugiakonteinerių siuntimo sprendimas „Panamax“, nuolatinės integracijos platforma „Drone“, debesų pagrindu veikianti operacinė sistema „OpenStack“ ir duomenų centrų operacinė sistema „D2iQ DC/OS“, pagrįsta klasterių valdytoju „Mesos“.
Kubernetes
„Docker“ ne visada gali pasiūlyti savo pačios orkestravimo įrankius, pavyzdžiui, „Swarm“ ir „Compose“. Dėl šios priežasties įvairios įmonės jau daugelį metų investuoja į savo pačių plėtros darbus, siekdamos sukurti specialiai pritaikytus įrankius, skirtus palengvinti konteinerių platformos veikimą didelėse, paskirstytose infrastruktūrose. Vienas iš populiariausių tokio tipo sprendimų yra atvirojo kodo projektas „Kubernetes“.
„Kubernetes“ – tai konteinerių pagrindu veikiančių programų klasterių valdymo sistema. „Kubernetes“ tikslas – automatizuoti programų veikimą klasteryje. Šiam tikslui pasiekti šis koordinavimo įrankis naudoja REST API, komandinės eilutės programą ir grafinę žiniatinklio sąsają kaip valdymo sąsajas. Naudojantis šiomis sąsajomis galima inicijuoti automatizuotą veiklą ir užklausti būsenos ataskaitas. „Kubernetes“ galite naudoti:
- vykdyti konteinerių pagrindu veikiančias programas klasteryje,
- įdiegti ir valdyti programas paskirstytose sistemose,
- mastelinti programas ir
- kuo geriau išnaudoti aparatinę įrangą.
Šiuo tikslu „Kubernetes“ sujungia konteinerius į logines dalis, vadinamas „podais“. „Podai“ yra klasterio valdytojo pagrindiniai vienetai, kuriuos galima paskirstyti klasteryje naudojant planavimą.
Kaip ir „Docker Swarm“, „Kubernetes“ taip pat grindžiamas „master-worker“ architektūra. Klasterį sudaro „Kubernetes“ pagrindinis kompiuteris ir įvairūs pagalbiniai kompiuteriai, kurie taip pat vadinami „Kubernetes“ mazgais (arba „minionais“). „Kubernetes“ pagrindinis kompiuteris veikia kaip centrinė klasterio valdymo plokštė ir susideda iš keturių pagrindinių komponentų, leidžiančių tiesiogiai bendrauti klasteryje ir paskirstyti užduotis. „Kubernetes“ pagrindinį kompiuterį sudaro API serveris, konfigūracijos atmintis „etcd“, tvarkaraščio sudarytojas ir valdiklio tvarkyklė.
- API serveris: visos automatizuotos operacijos „Kubernetes“ klasteryje pradedamos naudojant REST-API per API serverį. Jis veikia kaip centrinė klasterio administravimo sąsaja.
- etcd: atvirojo kodo konfigūracijos atmintį etcd galima laikyti „Kubernetes“ klasterio atmintimi. „Key Value Store“, kurią „CoreOS“ sukūrė specialiai paskirstytoms sistemoms, saugo konfigūracijos duomenis ir juos pateikia kiekvienam klasterio mazgui. Klasterio dabartinę būseną galima valdyti bet kuriuo metu per etcd.
- Planavimo programa: planavimo programa yra atsakinga už konteinerių grupių (podų) paskirstymą klasteryje. Ji nustato podo išteklių poreikius ir tada juos suderina su atskirų klasterio mazgų turimais ištekliais.
- Valdytojo tvarkyklė: valdytojo tvarkyklė yra „Kubernetes“ pagrindinio serverio paslauga, kuri kontroliuoja koordinavimą, reguliuodama klasterio būseną ir atlikdama įprastas užduotis. Pagrindinė valdytojo tvarkyklės užduotis yra užtikrinti, kad klasterio būsena atitiktų nustatytą tikslą.
Visi „Kubernetes“ pagrindinio serverio komponentai gali būti įdiegti tame pačiame serveryje arba paskirstyti keliuose pagrindiniuose serveriuose, sudarančiuose didelio patikimumo klasterį.
Nors „Kubernetes“ pagrindinis serveris yra atsakingas už koordinavimą, klasteryje paskirstyti podai veikia kompiuteriuose – „Kubernetes“ mazguose, kurie yra pavaldūs pagrindiniam serveriui. Tam kiekviename „Kubernetes“ mazge turi veikti konteinerių variklis. Nors „Docker“ yra de facto standartas, „Kubernetes“ nebūtinai turi naudoti konkretų konteinerių variklį.
Be konteinerių variklio, „Kubernetes“ mazgai apima šiuos komponentus:
- kubelet: kubelet yra agentas, veikiantis kiekviename „Kubernetes“ mazge ir naudojamas mazgui valdyti bei administruoti. Kaip pagrindinis kiekvieno mazgo ryšio taškas, kubelet yra prijungtas prie „Kubernetes“ pagrindinio serverio ir užtikrina, kad informacija būtų perduodama į valdymo lygmenį bei gaunama iš jo.
- kube-proxy: be to, kiekviename „Kubernetes“ mazge veikia tarpinio serverio paslauga kube-proxy. Ji užtikrina, kad užklausos iš išorės būtų persiunčiamos į atitinkamus konteinerius, ir teikia paslaugas konteinerių pagrindu veikiančių programų naudotojams. Kube-proxy taip pat siūlo elementarią apkrovos balansavimo funkciją.
Toliau pateiktame paveikslėlyje pateiktas pagrindinio mazgo architektūros, kuria grindžiama koordinavimo platforma „Kubernetes“, schematiškas vaizdas:

Be pagrindinio „Kubernetes“ projekto, yra ir daugybė įrankių bei plėtinių, leidžiančių išplėsti šios orkestravimo platformos funkcionalumą. Populiariausi iš jų – stebėjimo ir gedimų diagnostikos įrankiai „Prometheus“, „Weave Scope“ ir „sysdig“, taip pat paketų tvarkyklė „Helm“. Taip pat yra įskiepiai, skirti „Apache Maven“ ir „Gradle“, bei „Java“ API, leidžianti nuotoliniu būdu valdyti „Kubernetes“.
Laivų statykla
„Shipyard“ – tai bendruomenės sukurta valdymo sistema, pagrįsta „Swarm“ technologija, leidžianti vartotojams valdyti „Docker“ išteklius, pavyzdžiui, konteinerius, atvaizdus, serverius ir privačius registrus, naudodamiesi grafinė vartotojo sąsaja. Ji prieinama kaip internetinė programa per naršyklę. Be klasterių valdymo funkcijų, prieinamų per centrinę internetinę sąsają, „Shipyard“ taip pat siūlo vartotojų autentifikavimą ir prieigos kontrolę pagal vaidmenis.
Programinė įranga yra 100 % suderinama su „Docker“ nuotolinio valdymo API ir naudoja atvirojo kodo NoSQL duomenų bazę „RethinkDB“ vartotojų paskyrų, adresų ir įvykių duomenims saugoti. Programinė įranga pagrįsta klasterių valdymo įrankių rinkiniu „Citadel“ ir susideda iš trijų pagrindinių komponentų: valdiklio, API ir vartotojo sąsajos.
- „Shipyard“ valdiklis: valdiklis yra valdymo įrankio „Shipyard“ pagrindinis komponentas. „Shipyard“ valdiklis sąveikauja su „RethinkDB“, kad saugotų duomenis, ir leidžia kreiptis į atskirus „Docker“ klasterio kompiuterius bei valdyti įvykius.
- „Shipyard“ API: „Shipyard“ API yra pagrįsta REST. Visos valdymo įrankio funkcijos yra valdomos per „Shipyard“ API.
- „Shipyard“ vartotojo sąsaja (UI): „Shipyard“ UI yra „AngularJS“ programa, kuri vartotojams pateikia grafinę vartotojo sąsają „Docker“ klasterių valdymui interneto naršyklėje. Visi veiksmai vartotojo sąsajoje vyksta per „Shipyard“ API.
Daugiau informacijos apie šį atvirojo kodo projektą rasite oficialioje „Shipyard“ svetainėje.
„Panamax“
Atvirojo kodo programinės įrangos projekto „Panamax“ kūrėjai siekia supaprastinti daugiakonteinerių programų diegimą. Šis nemokamas įrankis vartotojams siūlo grafinę vartotojo sąsają, leidžiančią patogiai kurti, diegti ir platinti sudėtingas programas, pagrįstas „Docker“ konteinerių technologija, naudojant „drag-and-drop“ funkciją.
„Panamax“ leidžia sudėtingas daugiakonteinerines programas išsaugoti kaip programų šablonus ir vienu paspaudimu jas platinti klasterinėse architektūrose. Naudojantis integruota programų parduotuve, veikiančia „GitHub“ platformoje, pačių sukurtų programų šablonus galima saugoti „Git“ saugyklose ir padaryti juos prieinamus kitiems vartotojams.
Pagrindinius „Panamax“ architektūros komponentus galima suskirstyti į dvi grupes: „Panamax Local Client“ ir bet kokį skaičių nuotolinių diegimo tikslų.
„Panamax“ vietinis klientas yra pagrindinis šio „Docker“ įrankio komponentas. Jis veikia vietinėje sistemoje ir leidžia kurti sudėtingas konteinerių pagrindu veikiančias programas. Vietinis klientas susideda iš šių komponentų:
- CoreOS: norint įdiegti „Panamax“ vietinį klientą, kaip pagrindinė sistema reikalinga „Linux“ distribucija „CoreOS“, kuri buvo specialiai sukurta programinės įrangos konteineriams. „Panamax“ klientas „CoreOS“ sistemoje paleidžiamas kaip „Docker“ konteineris. Be „Docker“ funkcijų, vartotojai gali naudotis įvairiomis „CoreOS“ funkcijomis. Tarp jų yra, be kita ko, „Fleet“ ir „Journalctl“:
- „Fleet“: vietoj tiesioginės integracijos su „Docker“, „Panamax“ klientas naudoja klasterių valdytoją „Fleet“, kad koordinuotų savo konteinerius. „Fleet“ yra klasterių valdytojas, kuris kontroliuoja „Linux“ demoną „systemd“ kompiuterių klasteriuose.
- „Journalctl“: „Panamax“ klientas naudoja „Journalctl“, kad iš žurnalo paprašytų „Linux“ sistemos tvarkyklės „systemd“ žurnalo pranešimų.
- Vietinio kliento diegimo programa: vietinio kliento diegimo programa apima visus komponentus, reikalingus „Panamax“ kliento įdiegimui vietinėje sistemoje.
- „Panamax“ vietinis agentas: pagrindinis vietinio kliento komponentas yra vietinis agentas. Jis yra susietas su įvairiais kitais komponentais ir priklausomybėmis per „Panamax“ API. Tai apima vietinį „Docker“ šeimininką, „Panamax“ vartotojo sąsają, išorinius registrus ir klasterio diegimo tikslų nuotolinius agentus. Vietinis agentas sąveikauja su šiomis programų sąsajomis vietinėje sistemoje per „Panamax“ API, kad keistųsi informacija apie veikiančias programas:
- „Docker“ nuotolinis API: „Panamax“ ieško vaizdų vietinėje sistemoje per „Docker“ nuotolinį API ir gauna informaciją apie veikiančius konteinerius.
- etcd API: failai perduodami į CoreOS Fleet demoną per etcd API.
- systemd-journal-gatewayd.services: „Panamax“ gauna veikiančių paslaugų žurnalo išvestį per „systemd-journal-gatewayd.services“.
Be to, „Panamax API“ taip pat leidžia sąveikauti su įvairiais išoriniais API.
- „Docker“ registravimo API: „Panamax“ gauna atvaizdų žymes iš „Docker“ registro naudodamas „Docker“ registravimo API.
- „GitHub“ API: „Panamax“ įkelia šablonus iš „GitHub“ saugyklos naudodamas „GitHub“ API.
- „KissMetrics“ API: „KissMetrics“ API renka duomenis apie šablonus, kuriuos naudoja vartotojai.
- „Panamax“ vartotojo sąsaja: „Panamax“ vartotojo sąsaja veikia kaip vartotojo sąsaja vietinėje sistemoje ir leidžia vartotojams valdyti „Docker“ įrankį per grafinę sąsają. Vartotojo įvestys tiesiogiai perduodamos vietiniam agentui per „Panamax“ API. „Panamax“ vartotojo sąsaja pagrįsta „CTL Base UI Kit“ – „CenturyLink“ biblioteka, skirta internetinių projektų vartotojo sąsajos komponentams.
„Panamax“ terminologijoje kiekvienas „Docker“ klasterio mazgas, nevykdantis valdymo užduočių, vadinamas nuotoliniu diegimo tašku. Diegimo taškus sudaro „Docker“ šeimininkas, kuris yra sukonfigūruotas diegti „Panamax“ šablonus naudojant šiuos komponentus:
- Diegimo tikslo diegimo programa: diegimo tikslo diegimo programa paleidžia „Docker“ šeimininką, kuriame jau įdiegtas „Panamax“ nuotolinis agentas ir orkestravimo adapteris.
- „Panamax“ nuotolinis agentas: jei įdiegtas „Panamax“ nuotolinis agentas, programos gali būti platinamos per vietinį „Panamax“ klientą į bet kurį pageidaujamą klasterio galinį tašką. „Panamax“ nuotolinis agentas veikia kaip „Docker“ konteineris kiekviename klasterio diegimo tiksle.
- „Panamax“ koordinavimo adapteris: koordinavimo adapteryje programos logika pateikiama kiekvienam „Panamax“ prieinamam koordinavimo įrankiui nepriklausomame adapterio sluoksnyje. Dėl to vartotojai visada gali pasirinkti tikslią koordinavimo technologiją, kurią palaiko jų tikslinė aplinka. Iš anksto sukonfigūruoti adapteriai apima „Kubernetes“ ir „Fleet“:
- „Panamax“ „Kubernetes“ adapteris: kartu su „Panamax“ nuotolinio agento pagalba „Panamax“ „Kubernetes“ adapteris leidžia platinti „Panamax“ šablonus „Kubernetes“ klasteriuose.
- „Panamax Fleet“ adapteris: kartu su „Panamax“ nuotolinio valdymo agentu „Panamax Fleet“ adapteris leidžia platinti „Panamax“ šablonus klasteriuose, valdomuose naudojant „Fleet“ klasterių tvarkyklę.
Šiame paveikslėlyje pavaizduota atskirų „Panamax“ komponentų sąveika „Docker“ klasteryje:

„CoreOS“ pagrindu sukurta konteinerių valdymo priemonė „Panamax“ vartotojams per grafinę vartotojo sąsają siūlo įvairias standartines konteinerių koordinavimo technologijas, taip pat galimybę patogiai valdyti sudėtingas daugelio konteinerių programas klasterio architektūrose naudojant bet kurią sistemą (pavyzdžiui, savo nešiojamąjį kompiuterį).
Naudodamiesi „Panamax“ viešąja šablonų saugykla, „Panamax“ vartotojai per „GitHub“ turi prieigą prie viešos šablonų bibliotekos, kurioje yra įvairių išteklių.
Dronas
„Drone“ – tai paprasta nuolatinės integracijos platforma, kuriai keliami minimalūs reikalavimai. Naudodami šį „Docker“ įrankį, galite automatiškai įkelti naujausią savo versiją iš „Git“ saugyklos, pavyzdžiui, „GitHub“, ir ją išbandyti izoliuotuose „Docker“ konteineriuose. Galite paleisti bet kokį testų rinkinį ir siųsti ataskaitas bei pranešimus apie būseną el. paštu. Kiekvienam programinės įrangos testui sukuriama nauja konteineris, pagrįstas vaizdais iš viešojo „Docker“ registro. Tai reiškia, kad bet kuris viešai prieinamas „Docker“ vaizdas gali būti naudojamas kaip aplinka kodui testuoti.
„Drone“ yra integruota į „Docker“ ir suderinama su įvairiomis programavimo kalbomis, pavyzdžiui, PHP, Node.js, Ruby, Go ir Python. Vienintelis tikrasis reikalavimas yra konteinerių platforma. Naudodami „Drone“, galite sukurti savo asmeninę nuolatinės integracijos platformą bet kurioje sistemoje, kurioje galima įdiegti „Docker“. „Drone“ palaiko įvairius versijų valdymo saugyklas, o standartinio įdiegimo su „GitHub“ integracija vadovą rasite atvirojo kodo projekto svetainėje adresu readme.drone.io.
Nuolatinės integracijos platforma valdoma per žiniatinklio sąsają. Čia galima įkelti programinės įrangos versijas iš bet kurio „Git“ saugyklos, sujungti jas į programas ir paleisti rezultatą iš anksto nustatytoje testavimo aplinkoje. Tam sukuriama .drone.yml failas, kuriame nurodoma, kaip kurti ir paleisti programą kiekvienam programinės įrangos testui.
Dronų naudotojams siūlomas atvirojo kodo CI sprendimas, kuris sujungia tokių alternatyvių produktų kaip „Travis“ ir „Jenkins“ privalumus į vieną patogią naudoti programą.
OpenStack
Kalbant apie atvirojo kodo debesų infrastruktūrų kūrimą ir valdymą, atvirojo kodo debesų operacinė sistema „OpenStack“ yra geriausias programinės įrangos sprendimas.
Naudodami „OpenStack“ galite valdyti kompiuterinius, saugojimo ir tinklo išteklius iš centrinės valdymo konsolės ir suteikti galimybę galutiniams vartotojams jais naudotis per žiniatinklio sąsają.
Debesų operacinė sistema pagrįsta modulinės architektūros principu, kurią sudaro keli komponentai:
- „Zun“ (konteinerių paslauga): „Zun“ yra „OpenStack“ konteinerių paslauga, leidžianti lengvai diegti ir valdyti konteineriuose esančias programas „OpenStack“ debesyje. „Zun“ tikslas – leisti vartotojams valdyti konteinerius per REST API, nereikalaujant valdyti serverių ar klasterių. Norint naudoti „Zun“, reikės trijų kitų „OpenStack“ paslaugų: „Keystone“, „Neutron“ ir „kryr-libnetwork“. „Zun“ funkcionalumą taip pat galima išplėsti naudojant papildomas „OpenStack“ paslaugas, pvz., „Cinder“ ir „Glance“.
- Neutron (tinklo komponentas): Neutron (anksčiau vadintas Quantum) yra perkeliamas, mastelio keitimą palaikantis API palaikomas sistemos komponentas, naudojamas tinklo valdymui. Modulis suteikia sąsają sudėtingoms tinklo topologijoms ir palaiko įvairius papildinius, per kuriuos galima integruoti išplėstines tinklo funkcijas.
- kuryr-libnetwork (Docker tvarkyklė): kuryr-libnetwork yra tvarkyklė, veikianti kaip sąsaja tarp Docker ir Neutron.
- Cinder (blokinė saugykla): Cinder yra OpenStack architektūros komponento, teikiančio nuolatinę blokinę saugyklą VM veikimui, pavadinimas. Modulis teikia virtualią saugyklą per savitarnos API. Tai leidžia galutiniams vartotojams naudotis saugyklos ištekliais nežinant, kuris įrenginys teikia saugyklą.
- Keystone (tapatybės paslauga): Keystone teikia OpenStack vartotojams centrinę tapatybės paslaugą. Modulis veikia kaip autentiškumo patvirtinimo ir leidimų sistema tarp atskirų OpenStack komponentų. Prieigą prie projektų debesyje reguliuoja nuomininkai. Kiekvienas nuomininkas atstovauja vartotojui, ir galima apibrėžti kelis vartotojų prieigos lygius su skirtingomis teisėmis.
- Glance (vaizdų paslauga): su „Glance“ moduliu „OpenStack“ teikia paslaugą, leidžiančią saugoti ir gauti virtualių mašinų vaizdus.
Daugiau informacijos apie „OpenStack“ komponentus ir paslaugas rasite mūsų straipsnyje apie „OpenStack“.
Be minėtų komponentų, „OpenStack“ architektūrą galima išplėsti naudojant įvairius modulius. Apie skirtingus papildomus modulius galite paskaityti „OpenStack“ svetainėje.
D2iQ DC/OS
DC/OS (Distributed Cloud Operating System) – tai atvirojo kodo programinė įranga, skirta paskirstytųjų sistemų valdymui, kurią sukūrė „D2iQ Inc.“ (buvusi „Mesosphere“). Projektas pagrįstas atvirojo kodo klasterių valdytoju „Apache Mesos“ ir yra operacinė sistema, skirta duomenų centrams. Šaltinio kodas vartotojams prieinamas pagal „Apache“ licencijos 2 versiją „GitHub“ svetainės DC/OS saugyklose. Įmonėms skirta programinės įrangos versija taip pat prieinama svetainėje d2iq.com. Išsamią projekto dokumentaciją galima rasti svetainėje dcos.io.
DC/OS galima laikyti „Mesos“ distribucija, kuri suteikia visas klasterio tvarkyklės funkcijas (per centrinę vartotojo sąsają) ir žymiai praplečia „Mesos“ galimybes.
DC/OS naudoja „Mesos“ platformos paskirstytosios sistemos branduolį. Tai leidžia sujungti viso duomenų centro išteklius ir valdyti juos kaip sujungtą sistemą, panašią į vieną loginį serverį. Tokiu būdu galite valdyti ištisus fizinių ar virtualių mašinų klasterius taip pat lengvai, kaip ir vieną kompiuterį.
Ši programinė įranga supaprastina paskirstytųjų programų diegimą ir valdymą bei automatizuoja tokias užduotis kaip išteklių valdymas, planavimas ir procesų tarpusavio ryšys. D2iQ DC/OS pagrindu veikiančio klasterio bei jame esančių paslaugų valdymas atliekamas naudojant centrinę komandinės eilutės programą (CLI) arba žiniatinklio sąsają (GUI).
DC/OS izoliuoja klasterio išteklius ir teikia bendras paslaugas, pavyzdžiui, paslaugų aptikimą ar paketų valdymą. Pagrindiniai programinės įrangos komponentai veikia apsaugotoje srityje – pagrindiniame branduolyje. Tai apima „Mesos“ platformos pagrindinę ir agentų programas, kurios yra atsakingos už išteklių paskirstymą, procesų izoliaciją ir saugumo funkcijas.
- „Mesos“ pagrindinis serveris: „Mesos“ pagrindinis serveris yra pagrindinis procesas, veikiantis pagrindiniame mazge. „Mesos“ pagrindinio serverio paskirtis – valdyti išteklių tvarkymą ir koordinuoti užduotis (abstrakčius darbo vienetus), vykdomas agento mazge. Šiam tikslui „Mesos“ pagrindinis serveris paskirsto išteklius registruotoms DC/OS paslaugoms ir priima išteklių ataskaitas iš „Mesos“ agentų.
- Mesos agentai: Mesos agentai yra procesai, kurie veikia agentų sąskaitose ir yra atsakingi už pagrindinio serverio paskirstytų užduočių vykdymą. Mesos agentai reguliariai teikia ataskaitas apie klasteryje esančius išteklius Mesos pagrindiniam serveriui. Mesos pagrindinis serveris jas persiunčia planavimo programai (t. y. Marathon, Chronos arba Cassandra). Ji nusprendžia, kuri užduotis turi būti vykdoma kuriame mazge. Tada užduotys yra vykdomos konteineriuose izoliuotai.
Visi kiti sistemos komponentai, taip pat programos, kurias „Mesos“ agentai paleidžia per vykdytoją, veikia vartotojo erdvėje. Pagrindiniai standartinės DC/OS diegimo komponentai yra administratoriaus maršrutizatorius, „Mesos“ DNS, paskirstytasis DNS tarpinis serveris, apkrovos balansavimo įrenginys „Minuteman“, tvarkaraščio sudarymo programa „Marathon“, „Apache ZooKeeper“ ir „Exhibitor“.
- Administratoriaus maršrutizatorius: administratoriaus maršrutizatorius – tai specialiai sukonfigūruotas žiniatinklio serveris, pagrįstas NGINX, kuris teikia DC/OS paslaugas, taip pat atlieka centrinio autentifikavimo ir tarpinio serverio funkcijas.
- Mesos DNS: sistemos komponentas Mesos DNS teikia paslaugų aptikimo funkcijas, kurios leidžia atskiroms paslaugoms ir programoms klasteryje atpažinti viena kitą per centrinę domenų vardų sistemą (DNS).
- Išskirstytasis DNS proxy: išskirstytasis DNS proxy yra vidinis DNS dispečeris.
- Minuteman: sistemos komponentas Minuteman veikia kaip vidinis apkrovos balansavimo įrenginys, kuris dirba OSI referencinio modelio transporto sluoksnyje (4 sluoksnis).
- DC/OS „Marathon“: „Marathon“ yra pagrindinis „Mesos“ platformos komponentas, kuris „D2iQ DC/OS“ veikia kaip „init“ sistema (panaši į „systemd“). „Marathon“ paleidžia ir prižiūri DC/OS paslaugas bei programas klasterio aplinkose. Be to, programinė įranga teikia aukšto patikimumo funkcijas, paslaugų atradimą, apkrovos balansavimą, būklės patikrinimus ir grafinę žiniatinklio sąsają.
- Apache ZooKeeper: Apache ZooKeeper yra atvirojo kodo programinės įrangos komponentas, teikiantis koordinavimo funkcijas, skirtas programų veikimui ir valdymui paskirstytose sistemose. ZooKeeper naudojamas D2iQ DC/OS visų įdiegtų sistemos paslaugų koordinavimui.
- Exhibitor: Exhibitor yra sistemos komponentas, kuris automatiškai įdiegiamas ir konfigūruojamas su ZooKeeper kiekviename pagrindiniame mazge. Exhibitor taip pat teikia grafinę vartotojo sąsają ZooKeeper vartotojams.
Naudojant DC/OS sujungtus klasterio išteklius, galima vienu metu vykdyti įvairias užduotis. Tai, pavyzdžiui, leidžia lygiagrečiai veikti didžiųjų duomenų sistemų, mikro paslaugų ar konteinerių platformų, tokių kaip „Hadoop“, „Spark“ ir „Docker“, klasterio operacinėje sistemoje.
„D2iQ Universe“ aplinkoje DC/OS sistemai prieinamas viešasis programų katalogas. Naudodamiesi juo, galite įdiegti tokias programas kaip „Spark“, „Cassandra“, „Chronos“, „Jenkins“ ar „Kafka“ paprasčiausiai spustelėdami grafinėje vartotojo sąsajoje.
Kokios „Docker“ priemonės yra skirtos saugumui užtikrinti?
Nors konteineriuose vykdomi izoliuoti procesai naudoja tą patį branduolį, „Docker“ taiko įvairias priemones, kad juos izoliuotų vieną nuo kito. Tam paprastai naudojamos pagrindinės „Linux“ branduolio funkcijos, pavyzdžiui, „Cgroups“ ir „Namespaces“.
Tačiau konteineriai vis dar neužtikrina tokio paties izoliacijos lygio, kokį galima pasiekti naudojant virtualias mašinas. Nepaisant taikomų izoliacijos metodų, per konteinerius galima pasiekti svarbias pagrindines posistemes, pavyzdžiui, „Cgroups“, taip pat branduolio sąsajas, esančias kataloguose „/sys“ ir „/proc “.
„Docker“ kūrėjų komanda pripažino, kad šios saugumo problemos trukdo diegti konteinerių technologiją gamybinėse sistemose. Be pagrindinių „Linux“ branduolio izoliacijos metodų, naujesnės „Docker Engine“ versijos taip pat palaiko „AppArmor“, „SELinux“ ir „Seccomp“ sistemas, kurios veikia kaip tam tikros rūšies ugniasienė pagrindiniams ištekliams.
- AppArmor: naudojant „AppArmor“, reguliuojamos konteinerių prieigos teisės prie failų sistemų.
- SELinux: SELinux suteikia sudėtingą reguliavimo sistemą, kurioje galima įgyvendinti prieigos kontrolę prie pagrindinių išteklių.
- Seccomp: Seccomp (Secure Computing Mode) prižiūri sistemos iškvietų vykdymą.
Be šių „Docker“ įrankių, „Docker“ taip pat naudoja „Linux“ funkcijas, kad apribotų „root“ teises, kuriomis „Docker Engine“ paleidžia konteinerius.
Taip pat kyla ir kitų saugumo problemų, susijusių su programinės įrangos pažeidžiamumais programų komponentuose, platinamuose per „Docker“ registrą. Kadangi iš esmės bet kas gali kurti „Docker“ atvaizdus ir juos viešai paskelbti bendruomenei „Docker Hub“ platformoje, atsisiunčiant atvaizdą kyla pavojus, kad į jūsų sistemą pateks kenkėjiškas kodas. Prieš diegdami programą, „Docker“ naudotojai turėtų įsitikinti, kad visas atvaizde pateiktas kodas, skirtas konteinerių vykdymui, yra iš patikimo šaltinio.
„Docker“ siūlo patvirtinimo programą, kurią programinės įrangos teikėjai gali naudoti savo „Docker“ vaizdams patikrinti ir patvirtinti. Šia patvirtinimo programa „Docker“ siekia palengvinti kūrėjams saugių programinės įrangos tiekimo grandinių kūrimą jų projektams. Be to, kad programa didina saugumą vartotojams, ji taip pat siekia suteikti programinės įrangos kūrėjams galimybę išskirti savo projektus iš gausybės kitų prieinamų išteklių. Patikrinti atvaizdai pažymėti ženklu „Verified Publisher“ (Patikrintas leidėjas) ir, be kitų privalumų, Docker Hub paieškos rezultatuose jiems suteikiamas aukštesnis reitingas.