Mitkä ovat parhaat Docker-työkalut? Katsaus
Kattava Docker-ekosysteemi tarjoaa kehittäjille lukuisia mahdollisuuksia sovellusten käyttöönottoon, konttien hallintaan ja muihin toimintoihin. Käymme läpi tärkeimmät Docker-työkalut ja annamme yleiskatsauksen suosituimmista kolmansien osapuolten projekteista, jotka kehittävät avoimen lähdekoodin Docker-työkaluja.
Mitkä ovat Docker-ympäristön keskeiset työkalut ja komponentit?
Nykyään Docker on paljon enemmän kuin vain kehittynyt alusta ohjelmistokonttien hallintaan. Kehittäjät ovat luoneet laajan valikoiman erilaisia Docker-työkaluja, joiden avulla sovellusten käyttöönotto hajautetussa infrastruktuurissa ja pilviympäristöissä on helpompaa, nopeampaa ja joustavampaa. Klusterointi- ja orkestrointityökalujen lisäksi tarjolla on myös keskitetty sovellusmarkkinapaikka sekä työkalu pilviresurssien hallintaan.
Docker-moottori
Kun kehittäjät puhuvat ”Dockerista”, he tarkoittavat yleensä sitä avoimen lähdekoodin asiakas-palvelinsovellusta, jokamuodostaa konttialustan perustan. Tätä sovellusta kutsutaan nimellä Docker Engine. Docker Enginen keskeisiä osia ovat Docker-daemon, REST-rajapinta sekä käyttöliittymänä toimiva komentoriviliittymä (CLI).
Tämän ratkaisun avulla voit kommunikoida Docker Enginen kanssa komentorivikomennoilla ja hallita Docker-kuvia, Docker-tiedostoja ja Docker-kontteja kätevästi terminaalista käsin.

Yksityiskohtainen kuvaus Docker Enginestä löytyy aloittelijoille tarkoitetusta Docker-oppaastamme : Docker-opas: asennus ja ensimmäiset askeleet.
Docker Hub
Docker Hub tarjoaa käyttäjille pilvipohjaisen rekisterin, jonka avulla Docker-kuvia voidaan ladata, hallita keskitetysti ja jakaa muiden Docker-käyttäjien kanssa. Rekisteröityneet käyttäjät voivat tallentaa Docker-kuvia julkisiin tai yksityisiin arkistoihin. Julkisen kuvan lataaminen ( jota Docker-kielessä kutsutaan nimellä ”pulling” ) ei vaadi käyttäjätiliä. Integroitu tunnistemekanismi mahdollistaa kuvien versioinnin.
Muiden Docker-käyttäjien julkisten arkistojen lisäksi Docker Hubin virallisista arkistoista löytyy myös paljon Docker-kehitystiimin ja tunnettujen avoimen lähdekoodin projektien tarjoamia resursseja. Suosituimpia Docker-kuvia ovat muun muassa NGINX-verkkopalvelin, Redis-muistitietokanta, BusyBox-Unix-työkalupaketti ja Ubuntu-Linux-jakelu.

Organisaatiot ovat toinen tärkeä Docker Hubin ominaisuus, jonka avulla Docker-käyttäjät voivat luoda yksityisiä arkistoja, jotka ovat käytettävissä vain valitulle käyttäjäryhmälle. Käyttöoikeuksia hallitaan organisaation sisällä tiimien ja ryhmäjäsenyyksien avulla.
Docker Swarm
Docker Engine sisältää sisäänrakennetun toiminnon, jonka avulla käyttäjät voivat hallita Docker-isäntäkoneita swarm-nimisissä klustereissa. Docker Engineen sisäänrakennetut klusterinhallinta- ja koordinointitoiminnot perustuvat Swarmkit-työkalupakettiin. Jos käytössä on vanhempi versio konttialustasta, Docker-työkalu on saatavilla erillisenä sovelluksena.
Swarm on Docker-klusterointityökalu, joka yhdistää joukon Docker-isäntäkoneita yhdeksi virtuaaliseksi isäntäkoneeksi ja tarjoaa Docker REST API -rajapinnan. Mikä tahansa Docker-daemoniin liitetty Docker-työkalu voi käyttää Swarmia ja skaalautua minkä tahansa määrän Docker-isäntäkoneiden yli. Docker Engine CLI:n avulla käyttäjät voivat luoda swarmeja, jakaa sovelluksia klusterissa ja hallita swarmien toimintaa ilman, että heidän tarvitsee käyttää erillistä orkestrointiohjelmistoa.
Klusteriksi yhdistetyt Docker-moottorit toimivat swarm-tilassa. Valitse tämä vaihtoehto, jos haluat luoda uuden klusterin tai lisätä Docker-isäntäkoneen olemassa olevaan swarmiin. Klusterin yksittäisiä Docker-isäntäkoneita kutsutaan ”solmuiksi”. Klusterin solmut voivat toimia virtuaalisina isäntäkoneina samalla paikallisella järjestelmällä, mutta useimmiten käytetään pilvipohjaista ratkaisua, jossa Docker-swarm-klusterin yksittäiset solmut on jaettu eri järjestelmien ja infrastruktuurien kesken.
Ohjelmisto perustuu master-worker-arkkitehtuuriin. Kun tehtäviä on jaettava Swarm-klusterissa, käyttäjät välittävät palvelupyynnön hallintasolmuun. Hallintasolmu vastaa tämän jälkeen konttien aikatauluttamisesta klusterissa ja toimii ensisijaisena käyttöliittymänä Swarm-resurssien käyttämiseen.
Hallintasolmu lähettää yksittäisiä yksiköitä, joita kutsutaan tehtäviksi, työprosessisolmuille.
- Palvelut: palvelut ovat Docker-klusterien keskeisiä rakenteita. Palvelu määrittelee Docker-klusterissa suoritettavan tehtävän. Palvelu liittyy samaan kuvaan perustuviin kontteihin. Palvelua luodessaan käyttäjä määrittelee, mitä kuvaa ja komentoja käytetään. Lisäksi palvelut tarjoavat mahdollisuuden sovellusten skaalaamiseen. Docker-alustan käyttäjät määrittelevät yksinkertaisesti, kuinka monta konttia palvelua varten käynnistetään.
- Tehtävät: palvelujen jakamiseksi klusterissa hallintasolmu jakaa ne yksittäisiin työyksiköihin (tehtäviin). Jokainen tehtävä sisältää Docker-kontin sekä siinä suoritettavat komennot.
Konttien klusterinhallinnan ja koordinoinnin lisäksi hallintasolmut voivat oletusarvoisesti hoitaa myös työsolmujen tehtäviä – ellei näiden solmujen tehtäviä rajoiteta tiukasti hallintaan.
Jokaisella työprosessisolmulla toimii agenttiohjelma. Se vastaanottaa tehtäviä ja toimittaa vastaavalle pääsolmulle tilanneraportteja siirretyn tehtävän etenemisestä. Seuraava kuva esittää kaavamaisen esityksen Docker Swarmista:

Docker Swarmia käyttöön otettaessa käyttäjät turvautuvat yleensä Docker Machineen.
Docker Compose
Docker Compose mahdollistaa useiden konttien yhdistämisen ja suorittamisen yhdellä komennolla. Compose-ohjelmiston peruselementti on keskitetty ohjausmääritystiedosto, joka perustuu palkittuun YAML-kieliin. Tämän Compose-tiedoston syntaksi on samanlainen kuin avoimen lähdekoodin Vagrant-ohjelmistossa, jota käytetään virtuaalikoneiden luomiseen ja käyttöönottoon.
docker-compose.yml-tiedostossa voit määritellä haluamasi määrän ohjelmistokontteja, mukaan lukien kaikki riippuvuudet, sekä niiden väliset suhteet. Tällaisia monikonttisovelluksia hallitaan samalla tavalla kuin yksittäisiä ohjelmistokontteja. Käytä docker-compose-komentoa yhdessä halutun alikomennon kanssa sovelluksen koko elinkaaren hallintaan.
Tämä Docker-työkalu on helppo integroida Swarm-pohjaiseen klusteriin. Näin voit ajaa Compose-työkalulla luotuja monikonttisovelluksia hajautetuissa järjestelmissä yhtä helposti kuin yksittäisellä Docker-isäntäkoneella.
Toinen Docker Compose -sovelluksen ominaisuus on integroitu skaalausmekanismi. Tämän orkestrointityökalun avulla voit helposti määrittää komentoriviohjelmalla, kuinka monta konttia haluat käynnistää tietylle palvelulle.
Mitä kolmannen osapuolen Docker-työkaluja on saatavilla?
Docker Inc.:n oman kehitystyön lisäksi on olemassa useita ulkoisten toimittajien ohjelmistotyökaluja ja alustoja, jotka tarjoavat rajapintoja Docker Engineen tai jotka on kehitetty nimenomaan tätä suosittua konttialustaa varten. Docker-ekosysteemissä suosituimpia avoimen lähdekoodin projekteja ovat orkestrointityökalu Kubernetes, klusterinhallintatyökalu Shipyard, monikonttien siirtoratkaisu Panamax, jatkuvan integraation alusta Drone, pilvipohjainen käyttöjärjestelmä OpenStack sekä D2iQ DC/OS -datakeskuksen käyttöjärjestelmä, joka perustuu klusterinhallintaohjelmaan Mesos.
Kubernetes
Docker ei aina pysty tarjoamaan omia orkestrointityökalujaan, kuten Swarmia ja Composea. Tästä syystä useat yritykset ovat jo vuosien ajan panostaneet omaan kehitystyöhönsä luodakseen räätälöityjä työkaluja, joiden tarkoituksena on helpottaa konttialustan käyttöä suurissa, hajautetuissa infrastruktuureissa. Yksi suosituimmista tämän tyyppisistä ratkaisuista on avoimen lähdekoodin projekti Kubernetes.
Kubernetes on konttipohjaisten sovellusten klusterinhallintajärjestelmä. Kubernetesin tavoitteena on automatisoida sovellusten toiminta klusterissa. Tätä varten orkestrointityökalu käyttää ohjausrajapintoina REST-API:ta, komentoriviohjelmaa ja graafista verkkokäyttöliittymää. Näiden rajapintojen avulla voidaan käynnistää automaatioita ja pyytää tilanneraportteja. Kubernetesin avulla voit:
- suorittaa konttipohjaisia sovelluksia klusterissa,
- asentaa ja hallita sovelluksia hajautetuissa järjestelmissä,
- skaalata sovelluksia ja
- käyttää laitteistoa mahdollisimman tehokkaasti.
Tätä varten Kubernetes yhdistää kontit loogisiksi kokonaisuuksiksi, joita kutsutaan podeiksi. Podit ovat klusterinhallintaohjelmiston perusyksiköitä, joita voidaan jakaa klusteriin aikataulutuksen avulla.
Kuten Docker Swarm, myös Kubernetes perustuu master-worker-arkkitehtuuriin. Klusteri koostuu Kubernetes-masterista ja useista worker-solmuista, joita kutsutaan myös Kubernetes-solmuiksi (tai minioneiksi). Kubernetes-master toimii klusterin keskusohjausyksikkönä ja koostuu neljästä peruskomponentista, jotka mahdollistavat suoran viestinnän klusterissa ja tehtävien jakamisen. Kubernetes-master koostuu API-palvelimesta, konfiguraatiomuistista (etcd), aikatauluttajasta ja ohjainhallinnasta.
- API-palvelin: kaikki Kubernetes-klusterin automaatiot käynnistetään REST-API:n kautta API-palvelimen välityksellä. Se toimii klusterin keskitettynä hallintarajapintana.
- etcd: avoimen lähdekoodin konfiguraatiomuistia etcd:tä voi ajatella Kubernetes-klusterin muistina. CoreOS:n erityisesti hajautetuille järjestelmille kehittämä Key Value Store tallentaa konfiguraatiotiedot ja asettaa ne klusterin jokaisen solmun saataville. Klusterin nykyistä tilaa voidaan hallita milloin tahansa etcd:n kautta.
- Scheduler: Scheduler vastaa konttiryhmien (podien) jakamisesta klusterissa. Se määrittää podin resurssivaatimukset ja sovittaa ne klusterin yksittäisten solmujen käytettävissä oleviin resursseihin.
- Ohjainhallinta: ohjainhallinta on Kubernetes-pääpalvelimen palvelu, joka ohjaa orkestrointia säätelemällä klusterin tilaa ja suorittamalla rutiinitehtäviä. Ohjainhallinnan päätehtävänä on varmistaa, että klusterin tila vastaa määriteltyä tavoitetilaa.
Kubernetes-pääpalvelimen kaikki komponentit voivat sijaita samalla isäntäkoneella tai ne voidaan jakaa useiden pääpalvelin-isäntäkoneiden kesken korkean käytettävyyden klusterissa.
Vaikka Kubernetes-pääpalvelin vastaa järjestelyistä, klusteriin jaetut podit suoritetaan isäntäkoneilla, eli Kubernetes-solmuilla, jotka ovat pääpalvelimen alaisia. Tätä varten jokaisella Kubernetes-solmulla on oltava käynnissä konttimoottori. Vaikka Docker on käytännössä vakiintunut standardi, Kubernetesin ei tarvitse käyttää tiettyä konttimoottoria.
Konttimoottorin lisäksi Kubernetes-solmut sisältävät seuraavat komponentit:
- kubelet: kubelet on agentti, joka toimii jokaisessa Kubernetes-solmussa ja jota käytetään solmun ohjaamiseen ja hallintaan. Kunkin solmun keskeisenä yhteyspisteenä kubelet on yhteydessä Kubernetes-pääpalvelimeen ja varmistaa, että tiedot välitetään ohjauskerrokseen ja vastaanotetaan sieltä.
- kube-proxy: lisäksi välityspalvelu kube-proxy toimii jokaisessa Kubernetes-solmussa. Tämä varmistaa, että ulkopuolelta tulevat pyynnöt välitetään vastaaville kontteille, ja tarjoaa palveluja konttipohjaisten sovellusten käyttäjille. Kube-proxy tarjoaa myös perustason kuormituksen tasapainottamisen.
Seuraava kaavio esittää kaavamaisesti pääsolmuarkkitehtuurin, johon Kubernetes-orkestrointialusta perustuu:

Kubernetes-ydinprojektin lisäksi on olemassa lukuisia työkaluja ja laajennuksia, joiden avulla orkestrointialustaan voidaan lisätä uusia toimintoja. Suosituimpia ovat valvonta- ja vianmääritystyökalut Prometheus, Weave Scope ja sysdig sekä pakettienhallintaohjelma Helm. Saatavilla on myös laajennuksia Apache Mavenille ja Gradlelle sekä Java-sovellusliittymä (API), jonka avulla Kubernetesia voidaan hallita etäyhteydellä.
Telakka
Shipyard on yhteisön kehittämä, Swarm-alustaan perustuva hallintaratkaisu, jonka avulla käyttäjät voivat hallinnoida Docker-resursseja, kuten kontteja, kuvia, isäntäkoneita ja yksityisiä rekistereitä, graafisen käyttöliittymän kautta. Se on käytettävissä verkkosovelluksena selaimella. Keskitetyn verkkokäyttöliittymän kautta käytettävien klusterinhallintaominaisuuksien lisäksi Shipyard tarjoaa myös käyttäjätunnistuksen ja roolipohjaisen pääsynhallinnan.
Ohjelmisto on täysin yhteensopiva Docker-etä-API:n kanssa ja käyttää avoimen lähdekoodin NoSQL-tietokantaa RethinkDB:tä käyttäjätilien, osoitteiden ja tapahtumien tietojen tallentamiseen. Ohjelmisto perustuu klusterinhallintatyökalupakettiin Citadel ja koostuu kolmesta pääkomponentista: ohjain, API ja käyttöliittymä.
- Shipyard-ohjain: Ohjain on Shipyard-hallintatyökalun ydinosa. Shipyard-ohjain on yhteydessä RethinkDB:hen tietojen tallentamista varten ja mahdollistaa yksittäisten isäntäkoneiden osoittamisen Docker-klusterissa sekä tapahtumien hallinnan.
- Shipyard-sovellusliittymä (API): Shipyard-sovellusliittymä perustuu REST-arkkitehtuuriin. Hallintatyökalun kaikkia toimintoja ohjataan Shipyard-sovellusliittymän kautta.
- Shipyard-käyttöliittymä (UI): Shipyard-käyttöliittymä on AngularJS-sovellus, joka tarjoaa käyttäjille graafisen käyttöliittymän Docker-klusterien hallintaan verkkoselaimessa. Kaikki vuorovaikutus käyttöliittymässä tapahtuu Shipyard-sovellusliittymän kautta.
Lisätietoja avoimen lähdekoodin projektista löytyy Shipyardin virallisilta verkkosivuilta.
Panamax
Panamax-avoimen lähdekoodin ohjelmistoprojektin kehittäjien tavoitteena on yksinkertaistaa monikonttisovellusten käyttöönottoa. Tämä ilmainen työkalu tarjoaa käyttäjille graafisen käyttöliittymän, jonka avulla Docker-kontteihin perustuvia monimutkaisia sovelluksia voidaan kehittää, ottaa käyttöön ja jakaa kätevästi vedä ja pudota -toiminnolla.
Panamax mahdollistaa monimutkaisten monikonttisovellusten tallentamisen sovellusmalleiksi ja niiden jakamisen klusteriarkkitehtuureissa yhdellä napsautuksella. GitHubissa ylläpidettävän integroidun sovelluskaupan avulla itse luotujen sovellusten mallit voidaan tallentaa Git-arkistoihin ja asettaa muiden käyttäjien saataville.
Panamax-arkkitehtuurin peruskomponentit voidaan jakaa kahteen ryhmään: Panamax Local Client ja mikä tahansa määrä etäasennuskohteita.
Panamax-paikallisasiakasohjelma on tämän Docker-työkalun ydin. Se suoritetaan paikallisessa järjestelmässä ja mahdollistaa monimutkaisten konttipohjaisten sovellusten luomisen. Paikallisasiakasohjelma koostuu seuraavista osista:
- CoreOS: Panamax-paikallisasiakkaan asennus edellyttää isäntäjärjestelmäksi Linux-jakelua CoreOS, joka on suunniteltu erityisesti ohjelmistokontteja varten. Panamax-asiakasohjelma ajetaan tämän jälkeen Docker-konttina CoreOS-ympäristössä. Docker-ominaisuuksien lisäksi käyttäjillä on käytettävissään erilaisia CoreOS-toimintoja. Näitä ovat muun muassa Fleet ja Journalctl:
- Fleet: sen sijaan, että Panamax-asiakasohjelma integroituisi suoraan Docker-ohjelmistoon, se käyttää klusterinhallintaohjelmaa Fleet konttiensa koordinointiin. Fleet on klusterinhallintaohjelma, joka ohjaa Linux-daemonia systemd tietokoneklustereissa.
- Journalctl: Panamax-asiakasohjelma käyttää Journalctl:ää pyytääkseen lokiviestejä Linux-järjestelmänhallintaohjelmalta systemd: ltä lokista.
- Paikallisen asiakkaan asennusohjelma: paikallisen asiakkaan asennusohjelma sisältää kaikki komponentit, jotka tarvitaan Panamax-asiakkaan asentamiseen paikalliseen järjestelmään.
- Panamax-paikallisagentti: paikallisasiakkaan keskeinen komponentti on paikallisagentti. Se on kytketty useisiin muihin komponentteihin ja riippuvuuksiin Panamax-sovellusliittymän kautta. Näitä ovat paikallinen Docker-isäntä, Panamax-käyttöliittymä, ulkoiset rekisterit sekä klusterin käyttöönottokohteiden etäagentit. Paikallisagentti on vuorovaikutuksessa paikallisjärjestelmän seuraavien ohjelmarajapintojen kanssa Panamax-sovellusliittymän kautta vaihtaakseen tietoja käynnissä olevista sovelluksista:
- Docker-etä-API: Panamax etsii kuvia paikallisesta järjestelmästä Docker-etä-API:n kautta ja hankkii tietoja käynnissä olevista kontteista.
- etcd-API: tiedostot lähetetään CoreOS Fleet -daemonille etcd -API:n kautta.
- systemd-journal-gatewayd.services: Panamax hankkii käynnissä olevien palveluiden lokitiedot systemd-journal-gatewayd.services-palvelun kautta.
Lisäksi Panamax-sovellusliittymä mahdollistaa myös vuorovaikutuksen erilaisten ulkoisten sovellusliittymien kanssa.
- Docker-rekisterin sovellusliittymä: Panamax hakee kuvatunnisteet Docker-rekisteristä Docker-rekisterin sovellusliittymän kautta.
- GitHub-API: Panamax lataa malleja GitHub-arkistosta GitHub-API:n avulla.
- KissMetrics-API: KissMetrics-API kerää tietoja käyttäjien suorittamista malleista.
- Panamax-käyttöliittymä: Panamax-käyttöliittymä toimii käyttöliittymänä paikallisessa järjestelmässä ja antaa käyttäjille mahdollisuuden hallita Docker-työkalua graafisen käyttöliittymän kautta. Käyttäjän syöttämät tiedot välitetään suoraan paikalliselle agentille Panamax-API:n kautta. Panamax-käyttöliittymä perustuu CTL Base UI Kit -kirjastoon, joka on CenturyLinkin kehittämä web-projekteille tarkoitettu käyttöliittymäkomponenttien kirjasto.
Panamax-terminologiassa Docker-klusterin jokaista solmua, jolla ei ole hallintatehtäviä, kutsutaan etäasennuskohteeksi. Asennuskohteet koostuvat Docker-isäntäkoneesta, joka on määritetty ottamaan käyttöön Panamax-mallipohjia seuraavien komponenttien avulla:
- Asennuskohteen asennusohjelma: asennuskohteen asennusohjelma käynnistää Docker-isäntäkoneen, johon on asennettu Panamax-etäagentti ja orkestrointisovitin.
- Panamax-etäagentti: jos Panamax-etäagentti on asennettu, sovellukset voidaan jakaa paikallisen Panamax-asiakkaan kautta mihin tahansa haluttuun päätepisteeseen klusterissa. Panamax-etäagentti toimii Docker-konttina jokaisessa klusterin käyttöönottokohteessa.
- Panamax-orkestrointisovitin: orkestrointisovittimessa ohjelmalogiikka tarjotaan jokaiselle Panamaxille saatavilla olevalle orkestrointityökalulle itsenäisessä sovitinkerroksessa. Tämän ansiosta käyttäjillä on mahdollisuus valita aina tarkalleen se orkestrointiteknologia, jota heidän kohdeympäristönsä tukee. Esiasetettuja sovittimia ovat muun muassa Kubernetes ja Fleet:
- Panamax Kubernetes -sovitin: yhdessä Panamax-etäagentin kanssa Panamax Kubernetes -sovitin mahdollistaa Panamax-mallien jakamisen Kubernetes-klustereissa.
- Panamax Fleet -sovitin: yhdessä Panamax-etäagentin kanssa Panamax Fleet -sovitin mahdollistaa Panamax-mallien jakamisen klustereissa, joita hallitaan Fleet-klusterinhallinnan avulla.
Seuraava kaavio kuvaa Docker-klusterin yksittäisten Panamax-komponenttien välistä vuorovaikutusta:

CoreOS-pohjainen Panamax-konttienhallintatyökalu tarjoaa käyttäjille graafisen käyttöliittymän kautta monipuolisen valikoiman vakiintuneita konttien hallintatekniikoita sekä mahdollisuuden hallita monimutkaisia monikonttisovelluksia kätevästi klusteriarkkitehtuureissa millä tahansa laitteella (esimerkiksi omalla kannettavalla tietokoneella).
Panamaxin julkisen mallipohjakirjaston ansiosta Panamax-käyttäjät pääsevät käsiksi julkiseen mallipohjakirjastoon, joka sisältää monenlaisia resursseja GitHubin kautta.
Drooni
Drone on kevyt jatkuvan integraation alusta, jonka järjestelmävaatimukset ovat vähäiset. Tämän Docker-työkalun avulla voit ladata uusimman rakennuksesi automaattisesti GitHubin kaltaisesta Git-arkistosta ja testata sitä eristetyissä Docker-kontteissa. Voit suorittaa minkä tahansa testisarjan ja lähettää raportteja sekä tilaviestejä sähköpostitse. Jokaista ohjelmistotestiä varten luodaan uusi kontti, joka perustuu julkisen Docker-rekisterin kuviin. Tämä tarkoittaa, että mitä tahansa julkisesti saatavilla olevaa Docker-kuvaa voidaan käyttää koodin testausympäristönä.
Drone on integroitu Docker-alustaan, ja se tukee useita ohjelmointikieliä, kuten PHP:tä, Node.js:ää, Rubyä, Go:ta ja Pythonia. Ainoa todellinen vaatimus on konttialustan käyttö. Voit luoda oman jatkuvan integraatioalustasi Drone-ohjelmiston avulla millä tahansa järjestelmällä, johon Docker voidaan asentaa. Drone tukee useita versionhallintavarastoja, ja ohjeet vakiomuotoiseen asennukseen GitHub-integraation kanssa löytyvät avoimen lähdekoodin projektin verkkosivuilta osoitteesta readme.drone.io.
Jatkuvan integraatioalustan hallinta tapahtuu verkkokäyttöliittymän kautta. Siellä voit ladata ohjelmistoversioita mistä tahansa Git-arkistosta, yhdistää ne sovelluksiksi ja suorittaa tuloksen ennalta määritellyssä testausympäristössä. Tätä varten määritellään .drone.yml-tiedosto, jossa määritellään, miten sovellus luodaan ja suoritetaan kunkin ohjelmistotestin yhteydessä.
Dronekäyttäjille tarjotaan avoimen lähdekoodin CI-ratkaisu, joka yhdistää Travisin ja Jenkinsin kaltaisten vaihtoehtoisten tuotteiden vahvuudet käyttäjäystävälliseksi sovellukseksi.
OpenStack
Kun on kyse avoimen lähdekoodin pilvirakenteiden rakentamisesta ja ylläpidosta, avoimen lähdekoodin pilvipalveluohjelmisto OpenStack on ensisijainen ohjelmistoratkaisu.
OpenStackin avulla voit hallita tietokone-, tallennus- ja verkkoresursseja keskitetystä hallintapaneelista ja tarjota ne loppukäyttäjien käyttöön verkkokäyttöliittymän kautta.
Pilvipohjainen käyttöjärjestelmä perustuu modulaariseen arkkitehtuuriin, joka koostuu useista osista:
- Zun (konttipalvelu): Zun on OpenStackin konttipalvelu, joka mahdollistaa konttiteknologiaan perustuvien sovellusten helpon käyttöönoton ja hallinnan OpenStack-pilvipalvelussa. Zunin tarkoituksena on antaa käyttäjille mahdollisuus hallita kontteja REST-rajapinnan kautta ilman, että heidän tarvitsee hallita palvelimia tai klustereita. Zunin käyttämiseksi tarvitset kolme muuta OpenStack-palvelua: Keystone, Neutron ja kryr-libnetwork. Zunin toiminnallisuutta voidaan laajentaa myös muiden OpenStack-palveluiden, kuten Cinderin ja Glancen, avulla.
- Neutron (verkkokomponentti): Neutron (aiemmin Quantum) on siirrettävä, skaalautuva ja API-tuettu järjestelmäkomponentti, jota käytetään verkon hallintaan. Moduuli tarjoaa rajapinnan monimutkaisille verkkotopologioille ja tukee erilaisia laajennuksia, joiden avulla laajennettuja verkkotoimintoja voidaan integroida.
- kuryr-libnetwork (Docker-ohjain): kuryr-libnetwork on ohjain, joka toimii rajapintana Docker- ja Neutron-ohjelmistojen välillä.
- Cinder (lohkotallennus): Cinder on lempinimi OpenStack-arkkitehtuurin komponentille, joka tarjoaa pysyvää lohkotallennustilaa virtuaalikoneiden toimintaa varten. Moduuli tarjoaa virtuaalista tallennustilaa itsepalvelu-API:n kautta. Tämän avulla loppukäyttäjät voivat hyödyntää tallennusresursseja tietämättä, mikä laite tallennustilaa tarjoaa.
- Keystone (tunnistuspalvelu): Keystone tarjoaa OpenStack-käyttäjille keskitetyn tunnistuspalvelun. Moduuli toimii todennus- ja käyttöoikeusjärjestelmänä yksittäisten OpenStack-komponenttien välillä. Pääsyä pilvipalvelun projekteihin säännellään käyttäjäryhmien avulla. Jokainen käyttäjäryhmä edustaa yhtä käyttäjää, ja voidaan määritellä useita käyttäjäoikeuksia, joilla on erilaiset oikeudet.
- Glance (kuvapalvelu): Glance-moduulin avulla OpenStack tarjoaa palvelun, jonka avulla virtuaalikoneiden kuvia voidaan tallentaa ja hakea.
Lisätietoja OpenStackin osista ja palveluista löydät OpenStackia käsittelevästä artikkelistamme.
Edellä mainittujen komponenttien lisäksi OpenStack-arkkitehtuuria voidaan laajentaa erilaisilla moduuleilla. Lisätietoja eri valinnaisista moduuleista löytyy OpenStackin verkkosivuilta.
D2iQ DC/OS
DC/OS (Distributed Cloud Operating System) on D2iQ Inc:n (ent. Mesosphere) kehittämä avoimen lähdekoodin ohjelmisto hajautettujen järjestelmien hallintaan. Projekti perustuu avoimen lähdekoodin klusterinhallintaohjelmaan Apache Mesos ja on datakeskuksille tarkoitettu käyttöjärjestelmä. Lähdekoodi on käyttäjien saatavilla Apache-lisenssin version 2 nojalla GitHubin DC/OS-repositorioissa. Ohjelmiston yritysversio on saatavilla myös osoitteessa d2iq.com. Laaja projektidokumentaatio löytyy osoitteesta dcos.io.
DC/OS:ta voi ajatella Mesos-jakeluna, joka tarjoaa kaikki klusterinhallintaohjelman ominaisuudet (keskitetyn käyttöliittymän kautta) ja laajentaa Mesosta huomattavasti.
DC/OS hyödyntää Mesos-alustan hajautetun järjestelmän ydintä. Tämän ansiosta koko datakeskuksen resurssit voidaan yhdistää ja hallita yhtenäisenä järjestelmänä, ikään kuin ne olisivat yksi ainoa looginen palvelin. Näin fyysisten tai virtuaalisten koneiden kokonaisia klustereita voidaan hallita yhtä helposti kuin yksittäistä tietokonetta.
Ohjelmisto helpottaa hajautettujen sovellusten asennusta ja hallintaa sekä automatisoi tehtäviä, kuten resurssien hallintaa, aikataulutusta ja prosessien välistä viestintää. D2iQ DC/OS -alustaan perustuvan klusterin sekä sen sisältämien palveluiden hallinta tapahtuu keskitetyn komentoriviohjelman (CLI) tai verkkokäyttöliittymän (GUI) kautta.
DC/OS eristää klusterin resurssit ja tarjoaa jaettuja palveluita, kuten palvelujen tunnistuksen tai pakettien hallinnan. Ohjelmiston ydinkomponentit toimivat suojatulla alueella – ydinkernelissä. Tähän kuuluvat Mesos-alustan master- ja agent-ohjelmat, jotka vastaavat resurssien jakamisesta, prosessien eristämisestä ja turvallisuustoiminnoista.
- Mesos-pääpalvelin: Mesos-pääpalvelin on pääprosessi, joka toimii pääsolmussa. Mesos-pääpalvelimen tehtävänä on hallita resurssien hallintaa ja koordinoida agenttisolmuissa suoritettavia tehtäviä (abstrakteja työyksiköitä). Tätä varten Mesos-pääpalvelin jakaa resursseja rekisteröidyille DC/OS-palveluille ja vastaanottaa resurssiraportteja Mesos-agenteilta.
- Mesos-agentit: Mesos-agentit ovat prosesseja, jotka toimivat agenttitileillä ja vastaavat masterin jakamien tehtävien suorittamisesta. Mesos-agentit toimittavat säännöllisesti raportteja klusterin käytettävissä olevista resursseista Mesos-masterille. Mesos-master välittää nämä raportit aikatauluttajalle (eli Marathonille, Chronosille tai Cassandralle). Tämä päättää, mikä tehtävä suoritetaan milläkin solmulla. Tehtävät suoritetaan sitten eristetysti kontissa.
Kaikki muut järjestelmän komponentit sekä Mesos-agenttien executorin kautta suorittamat sovellukset toimivat käyttäjätilassa. Tavallisen DC/OS-asennuksen peruskomponentteja ovat admin-reititin, Mesos DNS, hajautettu DNS-välityspalvelin, kuormituksen tasapainottaja Minuteman, aikatauluttaja Marathon, Apache ZooKeeper ja Exhibitor.
- Admin-reititin: Admin-reititin on NGINX-pohjainen, erikseen konfiguroitu verkkopalvelin, joka tarjoaa DC/OS-palveluita sekä keskitettyjä todennus- ja välityspalvelintoimintoja.
- Mesos DNS: järjestelmäkomponentti Mesos DNS tarjoaa palvelunlöytötoimintoja, joiden avulla klusterin yksittäiset palvelut ja sovellukset voivat tunnistaa toisensa keskitetyn verkkotunnusjärjestelmän (DNS) kautta.
- Hajautettu DNS-välityspalvelin: Hajautettu DNS-välityspalvelin on sisäinen DNS-jakelija.
- Minuteman: järjestelmäkomponentti Minuteman toimii sisäisenä kuormituksen tasapainottajana, joka toimii OSI-viitemallin siirtokerroksessa (kerros 4).
- DC/OS Marathon: Marathon on Mesos-alustan keskeinen komponentti, joka toimii D2iQ DC/OS:ssa init-järjestelmänä (samanlainen kuin systemd). Marathon käynnistää ja valvoo DC/OS-palveluita ja -sovelluksia klusteriympäristöissä. Lisäksi ohjelmisto tarjoaa korkean käytettävyyden ominaisuuksia, palvelun löytämisen, kuormituksen tasapainottamisen, toimintatarkistuksia ja graafisen verkkokäyttöliittymän.
- Apache ZooKeeper: Apache ZooKeeper on avoimen lähdekoodin ohjelmistokomponentti, joka tarjoaa koordinointitoimintoja hajautettujen järjestelmien sovellusten toiminnalle ja hallinnalle. ZooKeeperia käytetään D2iQ DC/OS:ssa kaikkien asennettujen järjestelmäpalveluiden koordinointiin.
- Exhibitor: Exhibitor on järjestelmäkomponentti, joka asennetaan ja konfiguroidaan automaattisesti ZooKeeperin kanssa jokaiseen pääsolmuun. Exhibitor tarjoaa myös graafisen käyttöliittymän ZooKeeperin käyttäjille.
DC/OS:n kautta yhdistettyjen klusteriresurssien avulla voidaan suorittaa erilaisia työkuormia samanaikaisesti. Tämä mahdollistaa esimerkiksi big data -järjestelmien, mikropalveluiden tai konttialustojen, kuten Hadoopin, Sparkin ja Docker:in, rinnakkaisen toiminnan klusterikäyttöjärjestelmässä.
D2iQ Universe -ympäristössä on käytettävissä julkinen sovelluskatalogi DC/OS:lle. Sen avulla voit asentaa sovelluksia, kuten Spark, Cassandra, Chronos, Jenkins tai Kafka, yksinkertaisesti napsauttamalla graafista käyttöliittymää.
Mitä Docker-työkaluja on tarjolla tietoturvaan?
Vaikka kontteissa suoritettavat eristetyt prosessit käyttävät samaa ydintä, Docker eristää ne toisistaan useiden tekniikoiden avulla. Tähän käytetään yleensä Linux-ytimen perustoimintoja, kuten C-ryhmiä ja nimitiloja.
Kontit eivät kuitenkaan vieläkään tarjoa samaa eristystasoa kuin virtuaalikoneet. Eristystekniikoista huolimatta konttien kautta päästään käsiksi tärkeisiin ydinalijärjestelmiin, kuten Cgroup-ryhmiin, sekä /sys- ja /proc-hakemistoissa sijaitseviin ytimen rajapintoihin.
Docker-kehitystiimi on myöntänyt, että nämä turvallisuusongelmat muodostavat esteen konttiteknologian käyttöönotolle tuotantoympäristöissä. Linux-ytimen peruseristystekniikoiden lisäksi Docker Engine -ohjelmiston uudemmat versiot tukevat myös AppArmor-, SELinux- ja Seccomp-kehysrakenteita, jotka toimivat eräänlaisena palomuurina ytimen resursseille.
- AppArmor: AppArmorin avulla säädellään konttien käyttöoikeuksia tiedostojärjestelmiin.
- SELinux: SELinux tarjoaa monimutkaisen sääntelyjärjestelmän, jossa voidaan toteuttaa ydinresurssien käyttöoikeuksien hallinta.
- Seccomp: Seccomp (Secure Computing Mode) valvoo järjestelmäkutsujen suorittamista.
Näiden Docker-työkalujen lisäksi Docker hyödyntää myös Linuxin ominaisuuksia rajoittaakseen pääkäyttäjän oikeuksia, joilla Docker Engine käynnistää kontit.
Myös Docker-rekisterin kautta jaettujen sovelluskomponenttien ohjelmistohaavoittuvuuksiin liittyy muita turvallisuusriskejä. Koska käytännössä kuka tahansa voi luoda Docker-kuvia ja asettaa ne yhteisön saataville Docker Hubissa, kuvan lataamisen yhteydessä on olemassa riski, että järjestelmään pääsee haitallista koodia. Ennen sovelluksen käyttöönottoa Docker-käyttäjien tulisi varmistaa, että kaikki kuvassa konttien suorittamista varten oleva koodi on peräisin luotettavasta lähteestä.
Docker tarjoaa varmennusohjelman, jonka avulla ohjelmistotoimittajat voivat saada Docker-kuvansa tarkastettua ja varmennettua. Tämän varmennusohjelman avulla Docker pyrkii helpottamaan kehittäjien työtä turvallisten ohjelmistoketjujen rakentamisessa projekteilleen. Käyttäjien turvallisuuden parantamisen lisäksi ohjelman tavoitteena on tarjota ohjelmistokehittäjille keino erottautua lukuisista muista saatavilla olevista resursseista. Varmennetut kuvat merkitään Verified Publisher -tunnuksella, ja ne saavat muiden etujen lisäksi paremman sijoituksen Docker Hubin hakutuloksissa.