Kattava Docker-eko­sys­tee­mi tarjoaa ke­hit­tä­jil­le lukuisia mah­dol­li­suuk­sia so­vel­lus­ten käyt­töön­ot­toon, konttien hal­lin­taan ja muihin toi­min­toi­hin. Käymme läpi tär­keim­mät Docker-työkalut ja annamme yleis­kat­sauk­sen suo­si­tuim­mis­ta kol­man­sien os­a­puol­ten pro­jek­teis­ta, jotka ke­hit­tä­vät avoimen läh­de­koo­din Docker-työkaluja.

Mitkä ovat Docker-ym­pä­ris­tön keskeiset työkalut ja kom­po­nen­tit?

Nykyään Docker on paljon enemmän kuin vain ke­hit­ty­nyt alusta oh­jel­mis­to­kont­tien hal­lin­taan. Ke­hit­tä­jät ovat luoneet laajan va­li­koi­man erilaisia Docker-työkaluja, joiden avulla so­vel­lus­ten käyt­töön­ot­to ha­jau­te­tus­sa infra­struk­tuu­ris­sa ja pil­viym­pä­ris­töis­sä on helpompaa, nopeampaa ja jous­ta­vam­paa. Klus­te­roin­ti- ja or­ke­stroin­ti­työ­ka­lu­jen lisäksi tarjolla on myös kes­ki­tet­ty so­vel­lus­mark­ki­na­paik­ka sekä työkalu pil­vi­re­surs­sien hal­lin­taan.

Docker-moottori

Kun ke­hit­tä­jät puhuvat ”Doc­ke­ris­ta”, he tar­koit­ta­vat yleensä sitä avoimen läh­de­koo­din asiakas-pal­ve­lin­so­vel­lus­ta, jokamuodostaa kont­tia­lus­tan perustan. Tätä so­vel­lus­ta kutsutaan nimellä Docker Engine. Docker Enginen keskeisiä osia ovat Docker-daemon, REST-rajapinta sekä käyt­tö­liit­ty­mä­nä toimiva ko­men­to­ri­vi­liit­ty­mä (CLI).

Tämän ratkaisun avulla voit kom­mu­ni­koi­da Docker Enginen kanssa ko­men­to­ri­vi­ko­men­noil­la ja hallita Docker-kuvia, Docker-tie­dos­to­ja ja Docker-kontteja kätevästi ter­mi­naa­lis­ta käsin.

Kuva: Schematic representation of the Docker engine
The main com­po­nents of the Docker engine: the Docker daemon, REST API and Docker CLI

Yk­si­tyis­koh­tai­nen kuvaus Docker Enginestä löytyy aloit­te­li­joil­le tar­koi­te­tus­ta Docker-op­paas­tam­me : Docker-opas: asennus ja en­sim­mäi­set askeleet.

Docker Hub

Docker Hub tarjoaa käyt­tä­jil­le pil­vi­poh­jai­sen re­kis­te­rin, jonka avulla Docker-kuvia voidaan ladata, hallita kes­ki­te­tys­ti ja jakaa muiden Docker-käyt­tä­jien kanssa. Re­kis­te­röi­ty­neet käyttäjät voivat tallentaa Docker-kuvia julkisiin tai yk­si­tyi­siin ar­kis­toi­hin. Julkisen kuvan la­taa­mi­nen ( jota Docker-kielessä kutsutaan nimellä ”pulling” ) ei vaadi käyt­tä­jä­ti­liä. In­tegroi­tu tun­nis­te­me­ka­nis­mi mah­dol­lis­taa kuvien ver­sioin­nin.

Muiden Docker-käyt­tä­jien julkisten ar­kis­to­jen lisäksi Docker Hubin vi­ral­li­sis­ta ar­kis­tois­ta löytyy myös paljon Docker-ke­hi­tys­tii­min ja tun­net­tu­jen avoimen läh­de­koo­din pro­jek­tien tarjoamia re­surs­se­ja. Suo­si­tuim­pia Docker-kuvia ovat muun muassa NGINX-verk­ko­pal­ve­lin, Redis-muis­ti­tie­to­kan­ta, BusyBox-Unix-työ­ka­lu­pa­ket­ti ja Ubuntu-Linux-jakelu.

Kuva: Official repositories in the Docker node
You can find more than 100,000 free images in the official Docker re­po­si­to­ries.

Or­ga­ni­saa­tiot ovat toinen tärkeä Docker Hubin omi­nai­suus, jonka avulla Docker-käyttäjät voivat luoda yk­si­tyi­siä arkistoja, jotka ovat käy­tet­tä­vis­sä vain valitulle käyt­tä­jä­ryh­mäl­le. Käyt­tö­oi­keuk­sia hallitaan or­ga­ni­saa­tion sisällä tiimien ja ryh­mä­jä­se­nyyk­sien avulla.

Docker Swarm

Docker Engine sisältää si­sään­ra­ken­ne­tun toiminnon, jonka avulla käyttäjät voivat hallita Docker-isän­tä­ko­nei­ta swarm-nimisissä klus­te­reis­sa. Docker Engineen si­sään­ra­ken­ne­tut klus­te­rin­hal­lin­ta- ja koor­di­noin­ti­toi­min­not pe­rus­tu­vat Swarmkit-työ­ka­lu­pa­ket­tiin. Jos käytössä on vanhempi versio kont­tia­lus­tas­ta, Docker-työkalu on saa­ta­vil­la eril­li­se­nä so­vel­luk­se­na.

Swarm on Docker-klus­te­roin­ti­työ­ka­lu, joka yhdistää joukon Docker-isän­tä­ko­nei­ta yhdeksi vir­tu­aa­li­sek­si isän­tä­ko­neek­si ja tarjoaa Docker REST API -ra­ja­pin­nan. Mikä tahansa Docker-daemoniin liitetty Docker-työkalu voi käyttää Swarmia ja skaa­lau­tua minkä tahansa määrän Docker-isän­tä­ko­nei­den yli. Docker Engine CLI:n avulla käyttäjät voivat luoda swarmeja, jakaa so­vel­luk­sia klus­te­ris­sa ja hallita swarmien toimintaa ilman, että heidän tarvitsee käyttää erillistä or­ke­stroin­tioh­jel­mis­toa.

Klus­te­rik­si yh­dis­te­tyt Docker-moottorit toimivat swarm-tilassa. Valitse tämä vaih­toeh­to, jos haluat luoda uuden klusterin tai lisätä Docker-isän­tä­ko­neen olemassa olevaan swarmiin. Klusterin yk­sit­täi­siä Docker-isän­tä­ko­nei­ta kutsutaan ”solmuiksi”. Klusterin solmut voivat toimia vir­tu­aa­li­si­na isän­tä­ko­nei­na samalla pai­kal­li­sel­la jär­jes­tel­mäl­lä, mutta useim­mi­ten käytetään pil­vi­poh­jais­ta ratkaisua, jossa Docker-swarm-klusterin yk­sit­täi­set solmut on jaettu eri jär­jes­tel­mien ja infra­struk­tuu­rien kesken.

Oh­jel­mis­to perustuu master-worker-ark­ki­teh­tuu­riin. Kun tehtäviä on jaettava Swarm-klus­te­ris­sa, käyttäjät vä­lit­tä­vät pal­ve­lu­pyyn­nön hal­lin­ta­sol­muun. Hal­lin­ta­sol­mu vastaa tämän jälkeen konttien ai­ka­tau­lut­ta­mi­ses­ta klus­te­ris­sa ja toimii en­si­si­jai­se­na käyt­tö­liit­ty­mä­nä Swarm-re­surs­sien käyt­tä­mi­seen.

Hal­lin­ta­sol­mu lähettää yk­sit­täi­siä yksiköitä, joita kutsutaan teh­tä­vik­si, työpro­ses­si­sol­muil­le.

  • Palvelut: palvelut ovat Docker-klus­te­rien keskeisiä ra­ken­tei­ta. Palvelu mää­rit­te­lee Docker-klus­te­ris­sa suo­ri­tet­ta­van tehtävän. Palvelu liittyy samaan kuvaan pe­rus­tu­viin kont­tei­hin. Palvelua luo­des­saan käyttäjä mää­rit­te­lee, mitä kuvaa ja komentoja käytetään. Lisäksi palvelut tarjoavat mah­dol­li­suu­den so­vel­lus­ten skaa­laa­mi­seen. Docker-alustan käyttäjät mää­rit­te­le­vät yk­sin­ker­tai­ses­ti, kuinka monta konttia palvelua varten käyn­nis­te­tään.
  • Tehtävät: pal­ve­lu­jen ja­ka­mi­sek­si klus­te­ris­sa hal­lin­ta­sol­mu jakaa ne yk­sit­täi­siin työyk­si­köi­hin (tehtäviin). Jokainen tehtävä sisältää Docker-kontin sekä siinä suo­ri­tet­ta­vat komennot.

Konttien klus­te­rin­hal­lin­nan ja koor­di­noin­nin lisäksi hal­lin­ta­sol­mut voivat ole­tusar­voi­ses­ti hoitaa myös työ­sol­mu­jen tehtäviä – ellei näiden solmujen tehtäviä rajoiteta tiukasti hal­lin­taan.

Jo­kai­sel­la työpro­ses­si­sol­mul­la toimii agent­tioh­jel­ma. Se vas­taa­not­taa tehtäviä ja toimittaa vas­taa­val­le pää­sol­mul­le ti­lan­ne­ra­port­te­ja siirretyn tehtävän ete­ne­mi­ses­tä. Seuraava kuva esittää kaa­va­mai­sen esityksen Docker Swarmista:

Kuva: Schematic representation of a Docker Swarm
The manager-worker arc­hi­tec­tu­re of a Docker Swarm

Docker Swarmia käyttöön otet­taes­sa käyttäjät tur­vau­tu­vat yleensä Docker Machineen.

Docker Compose

Docker Compose mah­dol­lis­taa useiden konttien yh­dis­tä­mi­sen ja suo­rit­ta­mi­sen yhdellä ko­men­nol­la. Compose-oh­jel­mis­ton pe­rus­e­le­ment­ti on kes­ki­tet­ty oh­jaus­mää­ri­tys­tie­dos­to, joka perustuu pal­kit­tuun YAML-kieliin. Tämän Compose-tiedoston syntaksi on sa­man­lai­nen kuin avoimen läh­de­koo­din Vagrant-oh­jel­mis­tos­sa, jota käytetään vir­tu­aa­li­ko­nei­den luomiseen ja käyt­töön­ot­toon.

docker-compose.yml-tie­dos­tos­sa voit mää­ri­tel­lä haluamasi määrän oh­jel­mis­to­kont­te­ja, mukaan lukien kaikki riip­pu­vuu­det, sekä niiden väliset suhteet. Tällaisia mo­ni­kont­ti­so­vel­luk­sia hallitaan samalla tavalla kuin yk­sit­täi­siä oh­jel­mis­to­kont­te­ja. Käytä docker-compose-komentoa yhdessä halutun ali­ko­men­non kanssa so­vel­luk­sen koko elin­kaa­ren hal­lin­taan.

Tämä Docker-työkalu on helppo in­tegroi­da Swarm-poh­jai­seen klus­te­riin. Näin voit ajaa Compose-työ­ka­lul­la luotuja mo­ni­kont­ti­so­vel­luk­sia ha­jau­te­tuis­sa jär­jes­tel­mis­sä yhtä helposti kuin yk­sit­täi­sel­lä Docker-isän­tä­ko­neel­la.

Toinen Docker Compose -so­vel­luk­sen omi­nai­suus on in­tegroi­tu skaa­laus­me­ka­nis­mi. Tämän or­ke­stroin­ti­työ­ka­lun avulla voit helposti määrittää ko­men­to­ri­vioh­jel­mal­la, kuinka monta konttia haluat käyn­nis­tää tietylle pal­ve­lul­le.

Mitä kolmannen osapuolen Docker-työkaluja on saa­ta­vil­la?

Docker Inc.:n oman ke­hi­tys­työn lisäksi on olemassa useita ulkoisten toi­mit­ta­jien oh­jel­mis­to­työ­ka­lu­ja ja alustoja, jotka tarjoavat ra­ja­pin­to­ja Docker Engineen tai jotka on kehitetty ni­me­no­maan tätä suosittua kont­tia­lus­taa varten. Docker-eko­sys­tee­mis­sä suo­si­tuim­pia avoimen läh­de­koo­din pro­jek­te­ja ovat or­ke­stroin­ti­työ­ka­lu Ku­ber­ne­tes, klus­te­rin­hal­lin­ta­työ­ka­lu Shipyard, mo­ni­kont­tien siir­to­rat­kai­su Panamax, jatkuvan in­tegraa­tion alusta Drone, pil­vi­poh­jai­nen käyt­tö­jär­jes­tel­mä OpenStack sekä D2iQ DC/OS -da­ta­kes­kuk­sen käyt­tö­jär­jes­tel­mä, joka perustuu klus­te­rin­hal­lin­taoh­jel­maan Mesos.

Ku­ber­ne­tes

Docker ei aina pysty tar­joa­maan omia or­ke­stroin­ti­työ­ka­lu­jaan, kuten Swarmia ja Composea. Tästä syystä useat yritykset ovat jo vuosien ajan pa­nos­ta­neet omaan ke­hi­tys­työ­hön­sä luo­dak­seen rää­tä­löi­ty­jä työkaluja, joiden tar­koi­tuk­se­na on helpottaa kont­tia­lus­tan käyttöä suurissa, ha­jau­te­tuis­sa infra­struk­tuu­reis­sa. Yksi suo­si­tuim­mis­ta tämän tyyp­pi­sis­tä rat­kai­suis­ta on avoimen läh­de­koo­din projekti Ku­ber­ne­tes.

Ku­ber­ne­tes on kont­ti­poh­jais­ten so­vel­lus­ten klus­te­rin­hal­lin­ta­jär­jes­tel­mä. Ku­ber­ne­te­sin ta­voit­tee­na on au­to­ma­ti­soi­da so­vel­lus­ten toiminta klus­te­ris­sa. Tätä varten or­ke­stroin­ti­työ­ka­lu käyttää oh­jaus­ra­ja­pin­toi­na REST-API:ta, ko­men­to­ri­vioh­jel­maa ja graafista verk­ko­käyt­tö­liit­ty­mää. Näiden ra­ja­pin­to­jen avulla voidaan käyn­nis­tää au­to­maa­tioi­ta ja pyytää ti­lan­ne­ra­port­te­ja. Ku­ber­ne­te­sin avulla voit:

  • suorittaa kont­ti­poh­jai­sia so­vel­luk­sia klus­te­ris­sa,
  • asentaa ja hallita so­vel­luk­sia ha­jau­te­tuis­sa jär­jes­tel­mis­sä,
  • skaalata so­vel­luk­sia ja
  • käyttää lait­teis­toa mah­dol­li­sim­man te­hok­kaas­ti.

Tätä varten Ku­ber­ne­tes yhdistää kontit loo­gi­sik­si ko­ko­nai­suuk­sik­si, joita kutsutaan podeiksi. Podit ovat klus­te­rin­hal­lin­taoh­jel­mis­ton pe­rus­yk­si­köi­tä, joita voidaan jakaa klus­te­riin ai­ka­tau­lu­tuk­sen avulla.

Kuten Docker Swarm, myös Ku­ber­ne­tes perustuu master-worker-ark­ki­teh­tuu­riin. Klusteri koostuu Ku­ber­ne­tes-mas­te­ris­ta ja useista worker-solmuista, joita kutsutaan myös Ku­ber­ne­tes-solmuiksi (tai mi­nio­neik­si). Ku­ber­ne­tes-master toimii klusterin kes­kusoh­jausyk­sik­kö­nä ja koostuu neljästä pe­rus­kom­po­nen­tis­ta, jotka mah­dol­lis­ta­vat suoran vies­tin­nän klus­te­ris­sa ja tehtävien jakamisen. Ku­ber­ne­tes-master koostuu API-pal­ve­li­mes­ta, kon­fi­gu­raa­tio­muis­tis­ta (etcd), ai­ka­tau­lut­ta­jas­ta ja oh­jain­hal­lin­nas­ta.

  • API-palvelin: kaikki Ku­ber­ne­tes-klusterin au­to­maa­tiot käyn­nis­te­tään REST-API:n kautta API-pal­ve­li­men vä­li­tyk­sel­lä. Se toimii klusterin kes­ki­tet­ty­nä hal­lin­ta­ra­ja­pin­ta­na.
  • etcd: avoimen läh­de­koo­din kon­fi­gu­raa­tio­muis­tia etcd:tä voi ajatella Ku­ber­ne­tes-klusterin muistina. CoreOS:n eri­tyi­ses­ti ha­jau­te­tuil­le jär­jes­tel­mil­le kehittämä Key Value Store tallentaa kon­fi­gu­raa­tio­tie­dot ja asettaa ne klusterin jokaisen solmun saa­ta­vil­le. Klusterin nykyistä tilaa voidaan hallita milloin tahansa etcd:n kautta.
  • Scheduler: Scheduler vastaa kont­ti­ryh­mien (podien) ja­ka­mi­ses­ta klus­te­ris­sa. Se määrittää podin re­surs­si­vaa­ti­muk­set ja sovittaa ne klusterin yk­sit­täis­ten solmujen käy­tet­tä­vis­sä oleviin re­surs­sei­hin.
  • Oh­jain­hal­lin­ta: oh­jain­hal­lin­ta on Ku­ber­ne­tes-pää­pal­ve­li­men palvelu, joka ohjaa or­ke­stroin­tia sää­te­le­mäl­lä klusterin tilaa ja suo­rit­ta­mal­la ru­tii­ni­teh­tä­viä. Oh­jain­hal­lin­nan pää­teh­tä­vä­nä on varmistaa, että klusterin tila vastaa mää­ri­tel­tyä ta­voi­te­ti­laa.

Ku­ber­ne­tes-pää­pal­ve­li­men kaikki kom­po­nen­tit voivat sijaita samalla isän­tä­ko­neel­la tai ne voidaan jakaa useiden pää­pal­ve­lin-isän­tä­ko­nei­den kesken korkean käy­tet­tä­vyy­den klus­te­ris­sa.

Vaikka Ku­ber­ne­tes-pää­pal­ve­lin vastaa jär­jes­te­lyis­tä, klus­te­riin jaetut podit suo­ri­te­taan isän­tä­ko­neil­la, eli Ku­ber­ne­tes-solmuilla, jotka ovat pää­pal­ve­li­men alaisia. Tätä varten jo­kai­sel­la Ku­ber­ne­tes-solmulla on oltava käynnissä kont­ti­moot­to­ri. Vaikka Docker on käy­tän­nös­sä va­kiin­tu­nut standardi, Ku­ber­ne­te­sin ei tarvitse käyttää tiettyä kont­ti­moot­to­ria.

Kont­ti­moot­to­rin lisäksi Ku­ber­ne­tes-solmut si­säl­tä­vät seuraavat kom­po­nen­tit:

  • kubelet: kubelet on agentti, joka toimii jo­kai­ses­sa Ku­ber­ne­tes-solmussa ja jota käytetään solmun oh­jaa­mi­seen ja hal­lin­taan. Kunkin solmun kes­kei­se­nä yh­teys­pis­tee­nä kubelet on yh­tey­des­sä Ku­ber­ne­tes-pää­pal­ve­li­meen ja varmistaa, että tiedot vä­li­te­tään oh­jaus­ker­rok­seen ja vas­taa­no­te­taan sieltä.
  • kube-proxy: lisäksi vä­li­tys­pal­ve­lu kube-proxy toimii jo­kai­ses­sa Ku­ber­ne­tes-solmussa. Tämä varmistaa, että ul­ko­puo­lel­ta tulevat pyynnöt vä­li­te­tään vas­taa­vil­le kont­teil­le, ja tarjoaa palveluja kont­ti­poh­jais­ten so­vel­lus­ten käyt­tä­jil­le. Kube-proxy tarjoaa myös pe­rus­ta­son kuor­mi­tuk­sen ta­sa­pai­not­ta­mi­sen.

Seuraava kaavio esittää kaa­va­mai­ses­ti pää­sol­muark­ki­teh­tuu­rin, johon Ku­ber­ne­tes-or­ke­stroin­tia­lus­ta perustuu:

Kuva: Schematic representation of the Kubernetes architecture
The master-node arc­hi­tec­tu­re of the orc­he­stra­tion platform Ku­ber­ne­tes

Ku­ber­ne­tes-ydin­pro­jek­tin lisäksi on olemassa lukuisia työkaluja ja laa­jen­nuk­sia, joiden avulla or­ke­stroin­tia­lus­taan voidaan lisätä uusia toi­min­to­ja. Suo­si­tuim­pia ovat valvonta- ja vian­mää­ri­tys­työ­ka­lut Pro­met­heus, Weave Scope ja sysdig sekä pa­ket­tien­hal­lin­taoh­jel­ma Helm. Saa­ta­vil­la on myös laa­jen­nuk­sia Apache Mavenille ja Gradlelle sekä Java-so­vel­lus­liit­ty­mä (API), jonka avulla Ku­ber­ne­te­sia voidaan hallita etäyh­tey­del­lä.

Telakka

Shipyard on yhteisön kehittämä, Swarm-alustaan perustuva hal­lin­ta­rat­kai­su, jonka avulla käyttäjät voivat hal­lin­noi­da Docker-re­surs­se­ja, kuten kontteja, kuvia, isän­tä­ko­nei­ta ja yk­si­tyi­siä re­kis­te­rei­tä, graafisen käyt­tö­liit­ty­män kautta. Se on käy­tet­tä­vis­sä verk­ko­so­vel­luk­se­na se­lai­mel­la. Kes­ki­te­tyn verk­ko­käyt­tö­liit­ty­män kautta käy­tet­tä­vien klus­te­rin­hal­lin­tao­mi­nai­suuk­sien lisäksi Shipyard tarjoaa myös käyt­tä­jä­tun­nis­tuk­sen ja roo­li­poh­jai­sen pää­syn­hal­lin­nan.

Oh­jel­mis­to on täysin yh­teen­so­pi­va Docker-etä-API:n kanssa ja käyttää avoimen läh­de­koo­din NoSQL-tie­to­kan­taa RethinkDB:tä käyt­tä­jä­ti­lien, osoit­tei­den ja ta­pah­tu­mien tietojen tal­len­ta­mi­seen. Oh­jel­mis­to perustuu klus­te­rin­hal­lin­ta­työ­ka­lu­pa­ket­tiin Citadel ja koostuu kolmesta pää­kom­po­nen­tis­ta: ohjain, API ja käyt­tö­liit­ty­mä.

  • Shipyard-ohjain: Ohjain on Shipyard-hal­lin­ta­työ­ka­lun ydinosa. Shipyard-ohjain on yh­tey­des­sä RethinkDB:hen tietojen tal­len­ta­mis­ta varten ja mah­dol­lis­taa yk­sit­täis­ten isän­tä­ko­nei­den osoit­ta­mi­sen Docker-klus­te­ris­sa sekä ta­pah­tu­mien hallinnan.
  • Shipyard-so­vel­lus­liit­ty­mä (API): Shipyard-so­vel­lus­liit­ty­mä perustuu REST-ark­ki­teh­tuu­riin. Hal­lin­ta­työ­ka­lun kaikkia toi­min­to­ja ohjataan Shipyard-so­vel­lus­liit­ty­män kautta.
  • Shipyard-käyt­tö­liit­ty­mä (UI): Shipyard-käyt­tö­liit­ty­mä on AngularJS-sovellus, joka tarjoaa käyt­tä­jil­le graafisen käyt­tö­liit­ty­män Docker-klus­te­rien hal­lin­taan verk­ko­se­lai­mes­sa. Kaikki vuo­ro­vai­ku­tus käyt­tö­liit­ty­mäs­sä tapahtuu Shipyard-so­vel­lus­liit­ty­män kautta.

Li­sä­tie­to­ja avoimen läh­de­koo­din pro­jek­tis­ta löytyy Shi­py­ar­din vi­ral­li­sil­ta verk­ko­si­vuil­ta.

Panamax

Panamax-avoimen läh­de­koo­din oh­jel­mis­topro­jek­tin ke­hit­tä­jien ta­voit­tee­na on yk­sin­ker­tais­taa mo­ni­kont­ti­so­vel­lus­ten käyt­töön­ot­toa. Tämä ilmainen työkalu tarjoaa käyt­tä­jil­le graafisen käyt­tö­liit­ty­män, jonka avulla Docker-kont­tei­hin pe­rus­tu­via mo­ni­mut­kai­sia so­vel­luk­sia voidaan kehittää, ottaa käyttöön ja jakaa kätevästi vedä ja pudota -toi­min­nol­la.

Panamax mah­dol­lis­taa mo­ni­mut­kais­ten mo­ni­kont­ti­so­vel­lus­ten tal­len­ta­mi­sen so­vel­lus­mal­leik­si ja niiden jakamisen klus­te­riark­ki­teh­tuu­reis­sa yhdellä nap­sau­tuk­sel­la. Git­Hu­bis­sa yl­lä­pi­det­tä­vän in­tegroi­dun so­vel­lus­kau­pan avulla itse luotujen so­vel­lus­ten mallit voidaan tallentaa Git-ar­kis­toi­hin ja asettaa muiden käyt­tä­jien saa­ta­vil­le.

Panamax-ark­ki­teh­tuu­rin pe­rus­kom­po­nen­tit voidaan jakaa kahteen ryhmään: Panamax Local Client ja mikä tahansa määrä etä­asen­nus­koh­tei­ta.

Panamax-pai­kal­lis­asia­kas­oh­jel­ma on tämän Docker-työkalun ydin. Se suo­ri­te­taan pai­kal­li­ses­sa jär­jes­tel­mäs­sä ja mah­dol­lis­taa mo­ni­mut­kais­ten kont­ti­poh­jais­ten so­vel­lus­ten luomisen. Pai­kal­lis­asia­kas­oh­jel­ma koostuu seu­raa­vis­ta osista:

  • CoreOS: Panamax-pai­kal­lis­asiak­kaan asennus edel­lyt­tää isän­tä­jär­jes­tel­mäk­si Linux-jakelua CoreOS, joka on suun­ni­tel­tu eri­tyi­ses­ti oh­jel­mis­to­kont­te­ja varten. Panamax-asia­kas­oh­jel­ma ajetaan tämän jälkeen Docker-konttina CoreOS-ym­pä­ris­tös­sä. Docker-omi­nai­suuk­sien lisäksi käyt­tä­jil­lä on käy­tet­tä­vis­sään erilaisia CoreOS-toi­min­to­ja. Näitä ovat muun muassa Fleet ja Jour­nalctl:
  • Fleet: sen sijaan, että Panamax-asia­kas­oh­jel­ma in­tegroi­tui­si suoraan Docker-oh­jel­mis­toon, se käyttää klus­te­rin­hal­lin­taoh­jel­maa Fleet kont­tien­sa koor­di­noin­tiin. Fleet on klus­te­rin­hal­lin­taoh­jel­ma, joka ohjaa Linux-daemonia systemd tie­to­ko­neklus­te­reis­sa.
  • Jour­nalctl: Panamax-asia­kas­oh­jel­ma käyttää Jour­nalctl:ää pyy­tääk­seen lo­ki­vies­te­jä Linux-jär­jes­tel­män­hal­lin­taoh­jel­mal­ta systemd: ltä lokista.
  • Pai­kal­li­sen asiakkaan asen­nus­oh­jel­ma: pai­kal­li­sen asiakkaan asen­nus­oh­jel­ma sisältää kaikki kom­po­nen­tit, jotka tarvitaan Panamax-asiakkaan asen­ta­mi­seen pai­kal­li­seen jär­jes­tel­mään.
  • Panamax-pai­kal­li­sa­gent­ti: pai­kal­lis­asiak­kaan keskeinen kom­po­nent­ti on pai­kal­li­sa­gent­ti. Se on kytketty useisiin muihin kom­po­nent­tei­hin ja riip­pu­vuuk­siin Panamax-so­vel­lus­liit­ty­män kautta. Näitä ovat pai­kal­li­nen Docker-isäntä, Panamax-käyt­tö­liit­ty­mä, ulkoiset re­kis­te­rit sekä klusterin käyt­töön­ot­to­koh­tei­den etä­agen­tit. Pai­kal­li­sa­gent­ti on vuo­ro­vai­ku­tuk­ses­sa pai­kal­lis­jär­jes­tel­män seu­raa­vien oh­jel­ma­ra­ja­pin­to­jen kanssa Panamax-so­vel­lus­liit­ty­män kautta vaih­taak­seen tietoja käynnissä olevista so­vel­luk­sis­ta:
  • Docker-etä-API: Panamax etsii kuvia pai­kal­li­ses­ta jär­jes­tel­mäs­tä Docker-etä-API:n kautta ja hankkii tietoja käynnissä olevista kont­teis­ta.
  • etcd-API: tiedostot lä­he­te­tään CoreOS Fleet -dae­mo­nil­le etcd -API:n kautta.
  • systemd-journal-gatewayd.services: Panamax hankkii käynnissä olevien pal­ve­lui­den lo­ki­tie­dot systemd-journal-gatewayd.services-palvelun kautta.

Lisäksi Panamax-so­vel­lus­liit­ty­mä mah­dol­lis­taa myös vuo­ro­vai­ku­tuk­sen eri­lais­ten ulkoisten so­vel­lus­liit­ty­mien kanssa.

  • Docker-re­kis­te­rin so­vel­lus­liit­ty­mä: Panamax hakee ku­va­tun­nis­teet Docker-re­kis­te­ris­tä Docker-re­kis­te­rin so­vel­lus­liit­ty­män kautta.
  • GitHub-API: Panamax lataa malleja GitHub-ar­kis­tos­ta GitHub-API:n avulla.
  • Kiss­Met­rics-API: Kiss­Met­rics-API kerää tietoja käyt­tä­jien suo­rit­ta­mis­ta malleista.
  • Panamax-käyt­tö­liit­ty­mä: Panamax-käyt­tö­liit­ty­mä toimii käyt­tö­liit­ty­mä­nä pai­kal­li­ses­sa jär­jes­tel­mäs­sä ja antaa käyt­tä­jil­le mah­dol­li­suu­den hallita Docker-työkalua graafisen käyt­tö­liit­ty­män kautta. Käyttäjän syöttämät tiedot vä­li­te­tään suoraan pai­kal­li­sel­le agentille Panamax-API:n kautta. Panamax-käyt­tö­liit­ty­mä perustuu CTL Base UI Kit -kir­jas­toon, joka on Cen­tu­ry­Lin­kin kehittämä web-pro­jek­teil­le tar­koi­tet­tu käyt­tö­liit­ty­mä­kom­po­nent­tien kirjasto.

Panamax-ter­mi­no­lo­gias­sa Docker-klusterin jokaista solmua, jolla ei ole hal­lin­ta­teh­tä­viä, kutsutaan etä­asen­nus­koh­teek­si. Asen­nus­koh­teet koostuvat Docker-isän­tä­ko­nees­ta, joka on mää­ri­tet­ty ottamaan käyttöön Panamax-mal­li­poh­jia seu­raa­vien kom­po­nent­tien avulla:

  • Asen­nus­koh­teen asen­nus­oh­jel­ma: asen­nus­koh­teen asen­nus­oh­jel­ma käyn­nis­tää Docker-isän­tä­ko­neen, johon on asennettu Panamax-etä­agent­ti ja or­ke­stroin­ti­so­vi­tin.
  • Panamax-etä­agent­ti: jos Panamax-etä­agent­ti on asennettu, so­vel­luk­set voidaan jakaa pai­kal­li­sen Panamax-asiakkaan kautta mihin tahansa haluttuun pää­te­pis­tee­seen klus­te­ris­sa. Panamax-etä­agent­ti toimii Docker-konttina jo­kai­ses­sa klusterin käyt­töön­ot­to­koh­tees­sa.
  • Panamax-or­ke­stroin­ti­so­vi­tin: or­ke­stroin­ti­so­vit­ti­mes­sa oh­jel­ma­lo­giik­ka tarjotaan jo­kai­sel­le Pa­na­maxil­le saa­ta­vil­la olevalle or­ke­stroin­ti­työ­ka­lul­le it­se­näi­ses­sä so­vi­tin­ker­rok­ses­sa. Tämän ansiosta käyt­tä­jil­lä on mah­dol­li­suus valita aina tar­kal­leen se or­ke­stroin­ti­tek­no­lo­gia, jota heidän koh­deym­pä­ris­tön­sä tukee. Esia­se­tet­tu­ja so­vit­ti­mia ovat muun muassa Ku­ber­ne­tes ja Fleet:
  • Panamax Ku­ber­ne­tes -sovitin: yhdessä Panamax-etä­agen­tin kanssa Panamax Ku­ber­ne­tes -sovitin mah­dol­lis­taa Panamax-mallien jakamisen Ku­ber­ne­tes-klus­te­reis­sa.
  • Panamax Fleet -sovitin: yhdessä Panamax-etä­agen­tin kanssa Panamax Fleet -sovitin mah­dol­lis­taa Panamax-mallien jakamisen klus­te­reis­sa, joita hallitaan Fleet-klus­te­rin­hal­lin­nan avulla.

Seuraava kaavio kuvaa Docker-klusterin yk­sit­täis­ten Panamax-kom­po­nent­tien välistä vuo­ro­vai­ku­tus­ta:

Kuva: Schematic representation of the software architecture for the Panamax container management tool
The software arc­hi­tec­tu­re of the Panamax container ma­na­ge­ment tool

CoreOS-pohjainen Panamax-kont­tien­hal­lin­ta­työ­ka­lu tarjoaa käyt­tä­jil­le graafisen käyt­tö­liit­ty­män kautta mo­ni­puo­li­sen va­li­koi­man va­kiin­tu­nei­ta konttien hal­lin­ta­tek­nii­koi­ta sekä mah­dol­li­suu­den hallita mo­ni­mut­kai­sia mo­ni­kont­ti­so­vel­luk­sia kätevästi klus­te­riark­ki­teh­tuu­reis­sa millä tahansa lait­teel­la (esi­mer­kik­si omalla kan­net­ta­val­la tie­to­ko­neel­la).

Panamaxin julkisen mal­li­poh­ja­kir­jas­ton ansiosta Panamax-käyttäjät pääsevät käsiksi julkiseen mal­li­poh­ja­kir­jas­toon, joka sisältää mo­nen­lai­sia re­surs­se­ja GitHubin kautta.

Drooni

Drone on kevyt jatkuvan in­tegraa­tion alusta, jonka jär­jes­tel­mä­vaa­ti­muk­set ovat vähäiset. Tämän Docker-työkalun avulla voit ladata uusimman ra­ken­nuk­se­si au­to­maat­ti­ses­ti GitHubin kal­tai­ses­ta Git-ar­kis­tos­ta ja testata sitä eris­te­tyis­sä Docker-kont­teis­sa. Voit suorittaa minkä tahansa tes­ti­sar­jan ja lähettää ra­port­te­ja sekä ti­la­vies­te­jä säh­kö­pos­tit­se. Jokaista oh­jel­mis­to­tes­tiä varten luodaan uusi kontti, joka perustuu julkisen Docker-re­kis­te­rin kuviin. Tämä tar­koit­taa, että mitä tahansa jul­ki­ses­ti saa­ta­vil­la olevaa Docker-kuvaa voidaan käyttää koodin tes­tausym­pä­ris­tö­nä.

Drone on in­tegroi­tu Docker-alustaan, ja se tukee useita oh­jel­moin­ti­kie­liä, kuten PHP:tä, Node.js:ää, Rubyä, Go:ta ja Pythonia. Ainoa to­del­li­nen vaatimus on kont­tia­lus­tan käyttö. Voit luoda oman jatkuvan in­tegraa­tio­alus­ta­si Drone-oh­jel­mis­ton avulla millä tahansa jär­jes­tel­mäl­lä, johon Docker voidaan asentaa. Drone tukee useita ver­sion­hal­lin­ta­va­ras­to­ja, ja ohjeet va­kio­muo­toi­seen asen­nuk­seen GitHub-in­tegraa­tion kanssa löytyvät avoimen läh­de­koo­din projektin verk­ko­si­vuil­ta osoit­tees­ta readme.drone.io.

Jatkuvan in­tegraa­tio­alus­tan hallinta tapahtuu verk­ko­käyt­tö­liit­ty­män kautta. Siellä voit ladata oh­jel­mis­to­ver­sioi­ta mistä tahansa Git-ar­kis­tos­ta, yhdistää ne so­vel­luk­sik­si ja suorittaa tuloksen ennalta mää­ri­tel­lys­sä tes­tausym­pä­ris­tös­sä. Tätä varten mää­ri­tel­lään .drone.yml-tiedosto, jossa mää­ri­tel­lään, miten sovellus luodaan ja suo­ri­te­taan kunkin oh­jel­mis­to­tes­tin yh­tey­des­sä.

Dro­ne­käyt­tä­jil­le tarjotaan avoimen läh­de­koo­din CI-ratkaisu, joka yhdistää Travisin ja Jenkinsin kal­tais­ten vaih­toeh­tois­ten tuot­tei­den vahvuudet käyt­tä­jäys­tä­väl­li­sek­si so­vel­luk­sek­si.

OpenStack

Kun on kyse avoimen läh­de­koo­din pil­vi­ra­ken­tei­den ra­ken­ta­mi­ses­ta ja yl­lä­pi­dos­ta, avoimen läh­de­koo­din pil­vi­pal­ve­luoh­jel­mis­to OpenStack on en­si­si­jai­nen oh­jel­mis­to­rat­kai­su.

OpenS­tac­kin avulla voit hallita tietokone-, tallennus- ja verk­ko­re­surs­se­ja kes­ki­te­tys­tä hal­lin­ta­pa­nee­lis­ta ja tarjota ne lop­pu­käyt­tä­jien käyttöön verk­ko­käyt­tö­liit­ty­män kautta.

Pil­vi­poh­jai­nen käyt­tö­jär­jes­tel­mä perustuu mo­du­laa­ri­seen ark­ki­teh­tuu­riin, joka koostuu useista osista:

  • Zun (kont­ti­pal­ve­lu): Zun on OpenS­tac­kin kont­ti­pal­ve­lu, joka mah­dol­lis­taa kont­ti­tek­no­lo­gi­aan pe­rus­tu­vien so­vel­lus­ten helpon käyt­töö­no­ton ja hallinnan OpenStack-pil­vi­pal­ve­lus­sa. Zunin tar­koi­tuk­se­na on antaa käyt­tä­jil­le mah­dol­li­suus hallita kontteja REST-ra­ja­pin­nan kautta ilman, että heidän tarvitsee hallita pal­ve­li­mia tai klus­te­rei­ta. Zunin käyt­tä­mi­sek­si tarvitset kolme muuta OpenStack-palvelua: Keystone, Neutron ja kryr-lib­network. Zunin toi­min­nal­li­suut­ta voidaan laajentaa myös muiden OpenStack-pal­ve­lui­den, kuten Cinderin ja Glancen, avulla.
  • Neutron (verk­ko­kom­po­nent­ti): Neutron (aiemmin Quantum) on siir­ret­tä­vä, skaa­lau­tu­va ja API-tuettu jär­jes­tel­mä­kom­po­nent­ti, jota käytetään verkon hal­lin­taan. Moduuli tarjoaa ra­ja­pin­nan mo­ni­mut­kai­sil­le verk­ko­to­po­lo­gioil­le ja tukee erilaisia laa­jen­nuk­sia, joiden avulla laa­jen­net­tu­ja verk­ko­toi­min­to­ja voidaan in­tegroi­da.
  • kuryr-lib­network (Docker-ohjain): kuryr-lib­network on ohjain, joka toimii ra­ja­pin­ta­na Docker- ja Neutron-oh­jel­mis­to­jen välillä.
  • Cinder (loh­ko­tal­len­nus): Cinder on lempinimi OpenStack-ark­ki­teh­tuu­rin kom­po­nen­til­le, joka tarjoaa pysyvää loh­ko­tal­len­nus­ti­laa vir­tu­aa­li­ko­nei­den toimintaa varten. Moduuli tarjoaa vir­tu­aa­lis­ta tal­len­nus­ti­laa it­se­pal­ve­lu-API:n kautta. Tämän avulla lop­pu­käyt­tä­jät voivat hyödyntää tal­len­nus­re­surs­se­ja tie­tä­mät­tä, mikä laite tal­len­nus­ti­laa tarjoaa.
  • Keystone (tun­nis­tus­pal­ve­lu): Keystone tarjoaa OpenStack-käyt­tä­jil­le kes­ki­te­tyn tun­nis­tus­pal­ve­lun. Moduuli toimii todennus- ja käyt­tö­oi­keus­jär­jes­tel­mä­nä yk­sit­täis­ten OpenStack-kom­po­nent­tien välillä. Pääsyä pil­vi­pal­ve­lun pro­jek­tei­hin sään­nel­lään käyt­tä­jä­ryh­mien avulla. Jokainen käyt­tä­jä­ryh­mä edustaa yhtä käyttäjää, ja voidaan mää­ri­tel­lä useita käyt­tä­jä­oi­keuk­sia, joilla on erilaiset oikeudet.
  • Glance (ku­va­pal­ve­lu): Glance-moduulin avulla OpenStack tarjoaa palvelun, jonka avulla vir­tu­aa­li­ko­nei­den kuvia voidaan tallentaa ja hakea.

Li­sä­tie­to­ja OpenS­tac­kin osista ja pal­ve­luis­ta löydät OpenS­tac­kia kä­sit­te­le­väs­tä ar­tik­ke­lis­tam­me.

Edellä mai­nit­tu­jen kom­po­nent­tien lisäksi OpenStack-ark­ki­teh­tuu­ria voidaan laajentaa eri­lai­sil­la mo­duu­leil­la. Li­sä­tie­to­ja eri va­lin­nai­sis­ta mo­duu­leis­ta löytyy OpenS­tac­kin verk­ko­si­vuil­ta.

D2iQ DC/OS

DC/OS (Di­stri­bu­ted Cloud Operating System) on D2iQ Inc:n (ent. Me­sosp­he­re) kehittämä avoimen läh­de­koo­din oh­jel­mis­to ha­jau­tet­tu­jen jär­jes­tel­mien hal­lin­taan. Projekti perustuu avoimen läh­de­koo­din klus­te­rin­hal­lin­taoh­jel­maan Apache Mesos ja on da­ta­kes­kuk­sil­le tar­koi­tet­tu käyt­tö­jär­jes­tel­mä. Läh­de­koo­di on käyt­tä­jien saa­ta­vil­la Apache-lisenssin version 2 nojalla GitHubin DC/OS-re­po­si­to­riois­sa. Oh­jel­mis­ton yri­tys­ver­sio on saa­ta­vil­la myös osoit­tees­sa d2iq.com. Laaja pro­jek­ti­do­ku­men­taa­tio löytyy osoit­tees­ta dcos.io.

DC/OS:ta voi ajatella Mesos-jakeluna, joka tarjoaa kaikki klus­te­rin­hal­lin­taoh­jel­man omi­nai­suu­det (kes­ki­te­tyn käyt­tö­liit­ty­män kautta) ja laajentaa Mesosta huo­mat­ta­vas­ti.

DC/OS hyödyntää Mesos-alustan ha­jau­te­tun jär­jes­tel­män ydintä. Tämän ansiosta koko da­ta­kes­kuk­sen resurssit voidaan yhdistää ja hallita yh­te­näi­se­nä jär­jes­tel­mä­nä, ikään kuin ne olisivat yksi ainoa looginen palvelin. Näin fyysisten tai vir­tu­aa­lis­ten koneiden ko­ko­nai­sia klus­te­rei­ta voidaan hallita yhtä helposti kuin yk­sit­täis­tä tie­to­ko­net­ta.

Oh­jel­mis­to helpottaa ha­jau­tet­tu­jen so­vel­lus­ten asennusta ja hallintaa sekä au­to­ma­ti­soi tehtäviä, kuten re­surs­sien hallintaa, ai­ka­tau­lu­tus­ta ja pro­ses­sien välistä vies­tin­tää. D2iQ DC/OS -alustaan pe­rus­tu­van klusterin sekä sen si­säl­tä­mien pal­ve­lui­den hallinta tapahtuu kes­ki­te­tyn ko­men­to­ri­vioh­jel­man (CLI) tai verk­ko­käyt­tö­liit­ty­män (GUI) kautta.

DC/OS eristää klusterin resurssit ja tarjoaa jaettuja pal­ve­lui­ta, kuten pal­ve­lu­jen tun­nis­tuk­sen tai pakettien hallinnan. Oh­jel­mis­ton ydin­kom­po­nen­tit toimivat suo­ja­tul­la alueella – ydin­ker­ne­lis­sä. Tähän kuuluvat Mesos-alustan master- ja agent-ohjelmat, jotka vastaavat re­surs­sien ja­ka­mi­ses­ta, pro­ses­sien eris­tä­mi­ses­tä ja tur­val­li­suus­toi­min­nois­ta.

  • Mesos-pää­pal­ve­lin: Mesos-pää­pal­ve­lin on pääpro­ses­si, joka toimii pää­sol­mus­sa. Mesos-pää­pal­ve­li­men tehtävänä on hallita re­surs­sien hallintaa ja koor­di­noi­da agent­ti­sol­muis­sa suo­ri­tet­ta­via tehtäviä (ab­strak­te­ja työyk­si­köi­tä). Tätä varten Mesos-pää­pal­ve­lin jakaa re­surs­se­ja re­kis­te­röi­dyil­le DC/OS-pal­ve­luil­le ja vas­taa­not­taa re­surs­si­ra­port­te­ja Mesos-agen­teil­ta.
  • Mesos-agentit: Mesos-agentit ovat pro­ses­se­ja, jotka toimivat agent­ti­ti­leil­lä ja vastaavat masterin jakamien tehtävien suo­rit­ta­mi­ses­ta. Mesos-agentit toi­mit­ta­vat sään­nöl­li­ses­ti ra­port­te­ja klusterin käy­tet­tä­vis­sä olevista re­surs­seis­ta Mesos-mas­te­ril­le. Mesos-master välittää nämä raportit ai­ka­tau­lut­ta­jal­le (eli Ma­rat­ho­nil­le, Chro­no­sil­le tai Cas­sandral­le). Tämä päättää, mikä tehtävä suo­ri­te­taan milläkin solmulla. Tehtävät suo­ri­te­taan sitten eris­te­tys­ti kontissa.

Kaikki muut jär­jes­tel­män kom­po­nen­tit sekä Mesos-agenttien execu­to­rin kautta suo­rit­ta­mat so­vel­luk­set toimivat käyt­tä­jä­ti­las­sa. Ta­val­li­sen DC/OS-asen­nuk­sen pe­rus­kom­po­nent­te­ja ovat admin-reititin, Mesos DNS, ha­jau­tet­tu DNS-vä­li­tys­pal­ve­lin, kuor­mi­tuk­sen ta­sa­pai­not­ta­ja Minuteman, ai­ka­tau­lut­ta­ja Marathon, Apache ZooKeeper ja Exhibitor.

  • Admin-reititin: Admin-reititin on NGINX-pohjainen, erikseen kon­fi­gu­roi­tu verk­ko­pal­ve­lin, joka tarjoaa DC/OS-pal­ve­lui­ta sekä kes­ki­tet­ty­jä todennus- ja vä­li­tys­pal­ve­lin­toi­min­to­ja.
  • Mesos DNS: jär­jes­tel­mä­kom­po­nent­ti Mesos DNS tarjoaa pal­ve­lun­löy­tö­toi­min­to­ja, joiden avulla klusterin yk­sit­täi­set palvelut ja so­vel­luk­set voivat tunnistaa toisensa kes­ki­te­tyn verk­ko­tun­nus­jär­jes­tel­män (DNS) kautta.
  • Ha­jau­tet­tu DNS-vä­li­tys­pal­ve­lin: Ha­jau­tet­tu DNS-vä­li­tys­pal­ve­lin on sisäinen DNS-jakelija.
  • Minuteman: jär­jes­tel­mä­kom­po­nent­ti Minuteman toimii sisäisenä kuor­mi­tuk­sen ta­sa­pai­not­ta­ja­na, joka toimii OSI-vii­te­mal­lin siir­to­ker­rok­ses­sa (kerros 4).
  • DC/OS Marathon: Marathon on Mesos-alustan keskeinen kom­po­nent­ti, joka toimii D2iQ DC/OS:ssa init-jär­jes­tel­mä­nä (sa­man­lai­nen kuin systemd). Marathon käyn­nis­tää ja valvoo DC/OS-pal­ve­lui­ta ja -so­vel­luk­sia klus­te­riym­pä­ris­töis­sä. Lisäksi oh­jel­mis­to tarjoaa korkean käy­tet­tä­vyy­den omi­nai­suuk­sia, palvelun löy­tä­mi­sen, kuor­mi­tuk­sen ta­sa­pai­not­ta­mi­sen, toi­min­ta­tar­kis­tuk­sia ja graafisen verk­ko­käyt­tö­liit­ty­män.
  • Apache ZooKeeper: Apache ZooKeeper on avoimen läh­de­koo­din oh­jel­mis­to­kom­po­nent­ti, joka tarjoaa koor­di­noin­ti­toi­min­to­ja ha­jau­tet­tu­jen jär­jes­tel­mien so­vel­lus­ten toi­min­nal­le ja hal­lin­nal­le. Zoo­Kee­pe­ria käytetään D2iQ DC/OS:ssa kaikkien asen­net­tu­jen jär­jes­tel­mä­pal­ve­lui­den koor­di­noin­tiin.
  • Exhibitor: Exhibitor on jär­jes­tel­mä­kom­po­nent­ti, joka asen­ne­taan ja kon­fi­gu­roi­daan au­to­maat­ti­ses­ti Zoo­Kee­pe­rin kanssa jokaiseen pää­sol­muun. Exhibitor tarjoaa myös graafisen käyt­tö­liit­ty­män Zoo­Kee­pe­rin käyt­tä­jil­le.

DC/OS:n kautta yh­dis­tet­ty­jen klus­te­ri­re­surs­sien avulla voidaan suorittaa erilaisia työ­kuor­mia sa­ma­nai­kai­ses­ti. Tämä mah­dol­lis­taa esi­mer­kik­si big data -jär­jes­tel­mien, mik­ro­pal­ve­lui­den tai kont­tia­lus­to­jen, kuten Hadoopin, Sparkin ja Docker:in, rin­nak­kai­sen toiminnan klus­te­ri­käyt­tö­jär­jes­tel­mäs­sä.

D2iQ Universe -ym­pä­ris­tös­sä on käy­tet­tä­vis­sä julkinen so­vel­lus­ka­ta­lo­gi DC/OS:lle. Sen avulla voit asentaa so­vel­luk­sia, kuten Spark, Cassandra, Chronos, Jenkins tai Kafka, yk­sin­ker­tai­ses­ti nap­saut­ta­mal­la graafista käyt­tö­liit­ty­mää.

Mitä Docker-työkaluja on tarjolla tie­to­tur­vaan?

Vaikka kont­teis­sa suo­ri­tet­ta­vat eristetyt prosessit käyttävät samaa ydintä, Docker eristää ne toi­sis­taan useiden tek­nii­koi­den avulla. Tähän käytetään yleensä Linux-ytimen pe­rus­toi­min­to­ja, kuten C-ryhmiä ja ni­mi­ti­lo­ja.

Kontit eivät kui­ten­kaan vieläkään tarjoa samaa eris­tys­ta­soa kuin vir­tu­aa­li­ko­neet. Eris­tys­tek­nii­kois­ta huo­li­mat­ta konttien kautta päästään käsiksi tär­kei­siin ydin­a­li­jär­jes­tel­miin, kuten Cgroup-ryhmiin, sekä /sys- ja /proc-ha­ke­mis­tois­sa si­jait­se­viin ytimen ra­ja­pin­toi­hin.

Docker-ke­hi­tys­tii­mi on myöntänyt, että nämä tur­val­li­suuson­gel­mat muo­dos­ta­vat esteen kont­ti­tek­no­lo­gian käyt­töö­no­tol­le tuo­tan­to­ym­pä­ris­töis­sä. Linux-ytimen pe­rus­e­ris­tys­tek­nii­koi­den lisäksi Docker Engine -oh­jel­mis­ton uudemmat versiot tukevat myös AppArmor-, SELinux- ja Seccomp-ke­hys­ra­ken­tei­ta, jotka toimivat erään­lai­se­na pa­lo­muu­ri­na ytimen re­surs­seil­le.

  • AppArmor: Ap­pAr­mo­rin avulla sää­del­lään konttien käyt­tö­oi­keuk­sia tie­dos­to­jär­jes­tel­miin.
  • SELinux: SELinux tarjoaa mo­ni­mut­kai­sen sään­te­ly­jär­jes­tel­män, jossa voidaan toteuttaa ydin­re­surs­sien käyt­tö­oi­keuk­sien hallinta.
  • Seccomp: Seccomp (Secure Computing Mode) valvoo jär­jes­tel­mä­kut­su­jen suo­rit­ta­mis­ta.

Näiden Docker-työ­ka­lu­jen lisäksi Docker hyödyntää myös Linuxin omi­nai­suuk­sia ra­joit­taak­seen pää­käyt­tä­jän oikeuksia, joilla Docker Engine käyn­nis­tää kontit.

Myös Docker-re­kis­te­rin kautta jaettujen so­vel­lus­kom­po­nent­tien oh­jel­mis­to­haa­voit­tu­vuuk­siin liittyy muita tur­val­li­suus­ris­ke­jä. Koska käy­tän­nös­sä kuka tahansa voi luoda Docker-kuvia ja asettaa ne yhteisön saa­ta­vil­le Docker Hubissa, kuvan la­taa­mi­sen yh­tey­des­sä on olemassa riski, että jär­jes­tel­mään pääsee hai­tal­lis­ta koodia. Ennen so­vel­luk­sen käyt­töön­ot­toa Docker-käyt­tä­jien tulisi varmistaa, että kaikki kuvassa konttien suo­rit­ta­mis­ta varten oleva koodi on peräisin luo­tet­ta­vas­ta lähteestä.

Docker tarjoaa var­men­nus­oh­jel­man, jonka avulla oh­jel­mis­to­toi­mit­ta­jat voivat saada Docker-kuvansa tar­kas­tet­tua ja var­men­net­tua. Tämän var­men­nus­oh­jel­man avulla Docker pyrkii hel­pot­ta­maan ke­hit­tä­jien työtä tur­val­lis­ten oh­jel­mis­to­ket­ju­jen ra­ken­ta­mi­ses­sa pro­jek­teil­leen. Käyt­tä­jien tur­val­li­suu­den pa­ran­ta­mi­sen lisäksi ohjelman ta­voit­tee­na on tarjota oh­jel­mis­to­ke­hit­tä­jil­le keino erot­tau­tua lu­kui­sis­ta muista saa­ta­vil­la olevista re­surs­seis­ta. Var­men­ne­tut kuvat merkitään Verified Publisher -tun­nuk­sel­la, ja ne saavat muiden etujen lisäksi paremman si­joi­tuk­sen Docker Hubin ha­ku­tu­lok­sis­sa.

Siirry pää­va­lik­koon