Hvad er de bedste Docker-værktøjer? Et overblik
Det omfattende Docker-økosystem giver udviklere en række muligheder for at implementere applikationer, koordinere containere og meget mere. Vi gennemgår de vigtigste Docker-værktøjer og giver dig et overblik over de mest populære tredjepartsprojekter, der udvikler open source-værktøjer til Docker.
Hvilke værktøjer og komponenter er uundværlige i Docker?
I dag er Docker langt mere end blot en avanceret platform til styring af softwarecontainere. Udviklere har skabt en række forskellige Docker-værktøjer, der gør implementeringen af applikationer via distribueret infrastruktur og cloud-miljøer nemmere, hurtigere og mere fleksibel. Ud over værktøjer til clustering og orkestrering findes der også en central app-markedsplads og et værktøj til styring af cloud-ressourcer.
Docker Engine
Når udviklere taler om »Docker«, henviser de som regel til den open source-baserede klient-server-applikation, derdanner grundlaget for containerplatformen. Denne applikation kaldes Docker Engine. De centrale komponenter i Docker Engine er Docker-daemonen, et REST-API og et CLI (kommandolinjegrænseflade), der fungerer som brugergrænseflade.
Med denne løsning kan du kommunikere med Docker Engine via kommandolinjekommandoer og nemt administrere Docker-billeder, Docker-filer og Docker-containere fra terminalen.

Du kan finde en detaljeret beskrivelse af Docker Engine i vores Docker-vejledning for begyndere : Docker-vejledning: installation og de første skridt.
Docker Hub
Docker Hub tilbyder brugerne et cloudbaseret register, hvor Docker-billeder kan downloades, administreres centralt og deles med andre Docker-brugere. Registrerede brugere kan gemme Docker-billeder offentligt eller i private repositorier. Det kræver ikke en brugerkonto at downloade et offentligt billede (i Docker-terminologi kaldet »pulling« ). En integreret tag-mekanisme gør det muligt at versionere billederne.
Ud over de offentlige repositorier fra andre Docker-brugere findes der også mange ressourcer fra Docker-udviklerteamet og kendte open source-projekter i de officielle repositorier på Docker Hub. Blandt de mest populære Docker-images er NGINX-webserveren, Redis-databasen, der kører i hukommelsen, BusyBox-værktøjssættet til Unix samt Ubuntu-Linux-distributionen.

Organisationer er en anden vigtig funktion i Docker Hub, som giver Docker-brugere mulighed for at oprette private repositorier, der udelukkende er tilgængelige for en udvalgt gruppe af personer. Adgangsrettighederne administreres inden for en organisation ved hjælp af teams og gruppemedlemskaber.
Docker Swarm
Docker Engine indeholder en indbygget funktion, der giver brugerne mulighed for at administrere Docker-værter i klynger, der kaldes swarms. De klyngeadministrations- og orkestreringsfunktioner, der er indbygget i Docker Engine, er baseret på Swarmkit-værktøjskassen. Hvis man bruger en ældre version af containerplatformen, er Docker-værktøjet tilgængeligt som et selvstændigt program.
Som et indbygget Docker-klyngeværktøj samler Swarm en pulje af Docker-værter i en enkelt virtuel vært og stiller Docker REST API til rådighed. Ethvert Docker-værktøj, der er tilknyttet Docker-daemonen, kan få adgang til Swarm og skalere på tværs af et vilkårligt antal Docker-værter. Med Docker Engine CLI kan brugerne oprette swarms, distribuere applikationer i klyngen og styre swarmens adfærd uden at skulle bruge yderligere orkestreringssoftware.
Docker-motorer, der er samlet i klynger, kører i swarm-tilstand. Vælg denne indstilling, hvis du vil oprette en ny klynge eller tilføje en Docker-vært til en eksisterende swarm. De enkelte Docker-værter i en klynge kaldes »noder«. Noderne i en klynge kan køre som virtuelle værter på det samme lokale system, men oftere anvendes en cloudbaseret løsning, hvor de enkelte noder i Docker-swarm’en er fordelt på forskellige systemer og infrastrukturer.
Softwaren er baseret på en master-worker-arkitektur. Når opgaver skal fordeles i swarm-klyngen, sender brugerne en tjeneste til manager-noden. Manageren har derefter ansvaret for at planlægge containere i klyngen og fungerer som den primære brugergrænseflade til adgang til swarm-ressourcerne.
Ledernoden sender enkelte enheder, kaldet opgaver, til arbejdsknudepunkterne.
- Tjenester: Tjenester er centrale strukturer i Docker-klynger. En tjeneste definerer en opgave, der skal udføres i en Docker-klynge. En tjeneste omfatter en gruppe af containere, der er baseret på det samme billede. Når man opretter en tjeneste, angiver brugeren, hvilket billede og hvilke kommandoer der skal bruges. Derudover giver tjenester mulighed for at skalere applikationer. Brugere af Docker-platformen skal blot definere, hvor mange containere der skal startes for en tjeneste.
- Opgaver: For at distribuere tjenester i klyngen opdeles de i individuelle arbejdsenheder (opgaver) af manager-noden. Hver opgave omfatter en Docker-container samt de kommandoer, der udføres i den.
Ud over at varetage styringen af klyngen og koordineringen af containere kan manager-noder som standard også udføre worker-node-funktioner – medmindre du nøje begrænser disse noders opgaver til kun at omfatte styring.
Der kører et agentprogram på hver arbejdsknudepunkt. Dette modtager opgaver og sender statusrapporter til det respektive hovedknudepunkt om fremskridtet i den overførte opgave. Følgende figur viser en skematisk fremstilling af en Docker Swarm:

Når man implementerer en Docker Swarm, benytter man sig som regel af Docker-maskinen.
Docker Compose
Docker Compose gør det muligt at samle flere containere og køre dem med en enkelt kommando. Det centrale element i Compose er den centrale kontrolfil, der er baseret på det prisbelønnede sprog YAML. Syntaksen i denne Compose-fil ligner den i open source-programmet Vagrant, som bruges til at oprette og konfigurere virtuelle maskiner.
I filen docker-compose.yml* kan du definere et vilkårligt antal softwarecontainere, herunder alle afhængigheder, samt deres indbyrdes relationer. Sådanne applikationer med flere containere styres efter samme mønster som individuelle softwarecontainere. Brug kommandoendocker-compose* sammen med den ønskede underkommando til at administrere hele applikationens livscyklus.
Dette Docker-værktøj kan nemt integreres i en Swarm-baseret klynge. På den måde kan du køre applikationer med flere containere, der er oprettet med Compose, på distribuerede systemer lige så nemt, som du ville gøre det på en enkelt Docker-vært.
En anden funktion i Docker Compose er en integreret skaleringsmekanisme. Med dette orkestreringsværktøj kan du nemt bruge kommandolinjeprogrammet til at definere, hvor mange containere du ønsker at starte for en bestemt tjeneste.
Hvilke tredjepartsværktøjer til Docker findes der?
Ud over den interne udvikling fra Docker Inc. findes der forskellige softwareværktøjer og platforme fra eksterne udbydere, som tilbyder grænseflader til Docker Engine eller er udviklet specielt til den populære containerplatform. Inden for Docker-økosystemet omfatter de mest populære open source-projekter orkestreringsværktøjet Kubernetes, klyngestyringsværktøjet Shipyard, multi-container-shipping-løsningen Panamax, den kontinuerlige integrationsplatform Drone, det cloudbaserede operativsystem OpenStack og D2iQ DC/OS-datacenteroperativsystemet, som er baseret på klyngestyringsværktøjet Mesos.
Kubernetes
Det er ikke altid muligt for Docker at udvikle sine egne orkestreringsværktøjer som Swarm og Compose. Af den grund har forskellige virksomheder i årevis investeret i deres eget udviklingsarbejde med at skabe skræddersyede værktøjer, der skal lette driften af containerplatformen i store, distribuerede infrastrukturer. Blandt de mest populære løsninger af denne type er open source-projektet Kubernetes.
Kubernetes er en klyngestyring til containerbaserede applikationer. Formålet med Kubernetes er at automatisere applikationer i en klynge. Til dette formål anvender orkestreringsværktøjet en REST-API, et kommandolinjeprogram og en grafisk webgrænseflade som styringsgrænseflader. Via disse grænseflader kan man igangsætte automatiseringer og anmode om statusrapporter. Du kan bruge Kubernetes til at:
- køre containerbaserede applikationer på et cluster,
- installere og administrere applikationer i distribuerede systemer,
- skalere applikationer og
- udnytte hardware bedst muligt.
Med dette formål for øje samler Kubernetes containere i logiske enheder, der kaldes pods. Pods udgør klyngestyringens grundlæggende enheder, som kan fordeles i klyngen ved hjælp af planlægning.
Ligesom Dockers Swarm er Kubernetes også baseret på en master-worker-arkitektur. En klynge består af en Kubernetes-master og en række arbejdere, der også kaldes Kubernetes-noder (eller minions). Kubernetes-masteren fungerer som et centralt kontrolplan i klyngen og består af fire grundlæggende komponenter, der muliggør direkte kommunikation i klyngen og fordeling af opgaver. En Kubernetes-master består af en API-server, konfigurationshukommelsen etcd, en scheduler og en controller manager.
- API-server: Alle automatiseringer i Kubernetes-klyngen igangsættes via REST-API gennem en API-server. Denne fungerer som den centrale administrationsgrænseflade i klyngen.
- etcd: Man kan betragte open source-konfigurationshukommelsen etcd som hukommelsen i et Kubernetes-cluster. Key Value Store, som CoreOS har udviklet specifikt til distribuerede systemer, gemmer konfigurationsdata og gør dem tilgængelige for alle noder i clusteret. Den aktuelle tilstand i et cluster kan til enhver tid administreres via etcd.
- Scheduler: Scheduleren er ansvarlig for at fordele containergrupper (pods) i klyngen. Den fastlægger en pods ressourcebehov og matcher dette derefter med de tilgængelige ressourcer på de enkelte noder i klyngen.
- Controller manager: Controller manager er en tjeneste i Kubernetes-masteren og styrer orkestreringen ved at regulere klyngens tilstand og udføre rutineopgaver. Controller managerens hovedopgave er at sikre, at klyngens tilstand svarer til den definerede måltilstand.
Kubernetes-masterens overordnede komponenter kan være placeret på samme vært eller fordelt på flere master-værter inden for et højtilgængelighedskluster.
Mens Kubernetes-masteren står for orkestreringen, kører de pods, der er fordelt i klyngen, på værter, dvs. Kubernetes-noder, som er underordnet masteren. For at dette kan fungere, skal der køre en container-engine på hver Kubernetes-node. Selvom Docker er de facto-standarden, er Kubernetes ikke bundet til at bruge en bestemt container-engine.
Ud over container-motoren omfatter Kubernetes-noder følgende komponenter:
- kubelet: kubelet er en agent, der kører på hver enkelt Kubernetes-node og bruges til at styre og administrere noden. Som den centrale kontaktpunkt for hver node er kubelet forbundet med Kubernetes-masteren og sikrer, at information videregives til og modtages fra kontrolplanet.
- kube-proxy: Derudover kører proxytjenesten kube-proxy på hver Kubernetes-node. Dette sikrer, at anmodninger udefra videresendes til de respektive containere og leverer tjenester til brugere af containerbaserede applikationer. Kube-proxy tilbyder også rudimentær belastningsbalancering.
Følgende figur viser en skematisk fremstilling af den master-node-arkitektur, som orkestreringsplatformen Kubernetes bygger på:

Ud over selve Kubernetes-projektet findes der også en lang række værktøjer og udvidelser, der gør det muligt at tilføje yderligere funktionalitet til orkestreringsplatformen. De mest populære er overvågnings- og fejldiagnosticeringsværktøjerne Prometheus, Weave Scope og sysdig samt pakkehåndteringsværktøjet Helm. Der findes desuden plugins til Apache Maven og Gradle samt et Java-API, der giver mulighed for at fjernstyre Kubernetes.
Skibsværft
Shipyard er en brugerudviklet administrationsløsning baseret på Swarm, der giver brugerne mulighed for at administrere Docker-ressourcer som containere, billeder, værter og private registre via et grafisk brugergrænseflade. Det er tilgængeligt som en webapplikation via browseren. Ud over de klyngeadministrationsfunktioner, der kan tilgås via et centralt webgrænseflade, tilbyder Shipyard også brugergodkendelse og rollebaseret adgangskontrol.
Softwaren er 100 % kompatibel med Docker Remote API og bruger open source-NoSQL-databasen RethinkDB til at gemme data for brugerkonti, adresser og begivenheder. Softwaren er baseret på klyngestyringsværktøjet Citadel og består af tre hovedkomponenter: controller, API og brugergrænseflade.
- Shipyard-controller: Controlleren er kernen i administrationsværktøjet Shipyard. Shipyard-controlleren kommunikerer med RethinkDB for at gemme data og gør det muligt at henvende sig til individuelle værter i et Docker-klynge samt at styre begivenheder.
- Shipyard API: Shipyard API er baseret på REST. Alle funktioner i administrationsværktøjet styres via Shipyard API.
- Shipyard-brugergrænseflade (UI): Shipyard-brugergrænsefladen er en AngularJS-app, der giver brugerne en grafisk brugergrænseflade til styring af Docker-klynger i webbrowseren. Alle interaktioner i brugergrænsefladen foregår via Shipyard API.
Yderligere oplysninger om open source-projektet findes på Shipyards officielle hjemmeside.
Panamax
Udviklerne bag open source-projektet Panamax har sat sig for at forenkle implementeringen af apps, der består af flere containere. Det gratis værktøj tilbyder brugerne en grafisk brugergrænseflade, der gør det muligt at udvikle, implementere og distribuere komplekse applikationer baseret på Docker-containere på en nem måde ved hjælp af træk-og-slip.
Panamax gør det muligt at gemme komplekse applikationer med flere containere som applikationsskabeloner og distribuere dem i klyngearkitekturer med et enkelt klik. Via en integreret app-markedsplads, der hostes på GitHub, kan skabeloner til brugerdefinerede applikationer gemmes i Git-repositorier og gøres tilgængelige for andre brugere.
De grundlæggende komponenter i Panamax-arkitekturen kan inddeles i to grupper: Panamax Local Client og et vilkårligt antal eksterne implementeringsmål.
Den lokale Panamax-klient er kernen i dette Docker-værktøj. Den kører på det lokale system og gør det muligt at oprette komplekse containerbaserede applikationer. Den lokale klient består af følgende komponenter:
- CoreOS: Installation af den lokale Panamax-klient kræver Linux-distributionen CoreOS som værtsystem, som er specielt udviklet til softwarecontainere. Panamax-klienten kører derefter som en Docker-container i CoreOS. Ud over Docker-funktionerne har brugerne adgang til forskellige CoreOS-funktioner. Disse omfatter blandt andet Fleet og Journalctl:
- Fleet: I stedet for at integrere direkte med Docker bruger Panamax-klienten clustermanageren Fleet til at orkestrere sine containere. Fleet er en clustermanager, der styrer Linux-daemonen systemd i computerklynger.
- Journalctl: Panamax-klienten bruger Journalctl til at anmode om logmeddelelser fra Linux-systemadministratoren systemd fra journalen.
- Lokal klientinstallationsprogram: Det lokale klientinstallationsprogram indeholder alle komponenter, der er nødvendige for at installere Panamax-klienten på et lokalt system.
- Panamax lokal agent: den centrale komponent i den lokale klient er den lokale agent. Denne er forbundet med forskellige andre komponenter og afhængigheder via Panamax API. Disse omfatter den lokale Docker-host, Panamax UI, eksterne registre og fjernagenterne for implementeringsmålene i klyngen. Den lokale agent interagerer med følgende programgrænseflader på det lokale system via Panamax API for at udveksle oplysninger om kørende applikationer:
- Docker-fjern-API: Panamax søger efter billeder på det lokale system via Docker-fjern-API’en og indhenter oplysninger om kørende containere.
- etcd API: filer overføres til CoreOS Fleet-daemonen via etcd API.
- systemd-journal-gatewayd.services: Panamax henter journaludskriften for kørende tjenester via systemd-journal-gatewayd.services.
Desuden muliggør Panamax API også integration med forskellige eksterne API’er.
- Docker Registry API: Panamax henter billedtags fra Docker Registry via Docker Registry API.
- GitHub-API: Panamax indlæser skabeloner fra GitHub-repositoriet ved hjælp af GitHub-API’en.
- KissMetrics API: KissMetrics API indsamler data om skabeloner, som brugerne kører.
- Panamax UI: Panamax UI fungerer som en brugergrænseflade på det lokale system og giver brugerne mulighed for at styre Docker-værktøjet via en grafisk grænseflade. Brugerindtastninger videresendes direkte til den lokale agent via Panamax API. Panamax UI er baseret på CTL Base UI Kit, et bibliotek med UI-komponenter til webprojekter fra CenturyLink.
I Panamax-terminologien betegnes hver node i et Docker-klynge uden administrationsopgaver som et eksternt implementeringsmål. Implementeringsmål består af en Docker-vært, der er konfigureret til at implementere Panamax-skabeloner ved hjælp af følgende komponenter:
- Installationsprogram til implementeringsmål: Installationsprogrammet til implementeringsmål starter en Docker-vært, komplet med en Panamax-fjernagent og en orkestreringsadapter.
- Panamax-fjernagent: Hvis der er installeret en Panamax-fjernagent, kan applikationer distribueres via den lokale Panamax-klient til ethvert ønsket slutpunkt i klyngen. Panamax-fjernagenten kører som en Docker-container på hvert implementeringsmål i klyngen.
- Panamax-orkestreringsadapter: I orkestreringsadapteren leveres programlogikken for hvert orkestreringsværktøj, der er tilgængeligt for Panamax, i et uafhængigt adapterlag. På grund af dette har brugerne mulighed for altid at vælge den nøjagtige orkestreringsteknologi, der skal understøttes af deres målmiljø. Forudkonfigurerede adaptere inkluderer Kubernetes og Fleet:
- Panamax Kubernetes-adapter: I kombination med Panamax-fjernagenten muliggør Panamax Kubernetes-adapteren distribution af Panamax-skabeloner i Kubernetes-klynger.
- Panamax Fleet-adapter: I kombination med Panamax-fjernagenten muliggør Panamax Fleet-adapteren distribution af Panamax-skabeloner i klynger, der styres ved hjælp af Fleet-klyngemanageren.
Følgende figur viser samspillet mellem de enkelte Panamax-komponenter i et Docker-cluster:

Det CoreOS-baserede containeradministrationsværktøj Panamax giver brugerne adgang til en række standardteknologier til containerorkestrering via en grafisk brugergrænseflade samt muligheden for nemt at administrere komplekse applikationer med flere containere i klyngearkitekturer fra ethvert system (f.eks. din egen bærbare computer).
Med Panamax’ offentlige skabelonarkiv har Panamax-brugere adgang til et offentligt skabelonbibliotek med forskellige ressourcer via GitHub.
Drone
Drone er en strømlinet platform til kontinuerlig integration med minimale krav. Med dette Docker-værktøj kan du automatisk hente din nyeste build fra et Git-repository som f.eks. GitHub og teste den i isolerede Docker-containere. Du kan køre enhver testsuite og sende rapporter og statusmeddelelser via e-mail. For hver softwaretest oprettes der en ny container baseret på billeder fra det offentlige Docker-register. Det betyder, at ethvert offentligt tilgængeligt Docker-billede kan bruges som miljø til at teste koden.
Drone er integreret i Docker og understøttes af forskellige programmeringssprog, såsom PHP, Node.js, Ruby, Go og Python. Containerplatformen er den eneste egentlige forudsætning. Du kan oprette din egen personlige platform til kontinuerlig integration med Drone på ethvert system, hvor Docker kan installeres. Drone understøtter forskellige versionsstyringsrepositorier, og du kan finde en vejledning til standardinstallationen med GitHub-integration på open source-projektets hjemmeside under readme.drone.io.
Administrationen af platformen til kontinuerlig integration foregår via en webgrænseflade. Her kan du hente software-builds fra ethvert Git-repository, flette dem sammen til applikationer og køre resultatet i et foruddefineret testmiljø. Til dette formål oprettes der en .drone.yml-fil, der angiver, hvordan applikationen skal oprettes og køres for hver enkelt softwaretest.
Drone-brugere får en open source-CI-løsning, der forener styrkerne ved alternative produkter som Travis og Jenkins i et brugervenligt program.
OpenStack
Når det drejer sig om at opbygge og drive open source-cloudløsninger, er open source-cloudoperativsystemet OpenStack den foretrukne softwareløsning.
Med OpenStack kan du administrere computer-, lager- og netværksressourcer fra et centralt kontrolpanel og gøre dem tilgængelige for slutbrugerne via en webgrænseflade.
Cloud-operativsystemet er baseret på en modulær arkitektur, der består af flere komponenter:
- Zun (containertjeneste): Zun er OpenStacks containertjeneste og gør det nemt at implementere og administrere containerbaserede applikationer i OpenStack-skyen. Formålet med Zun er at give brugerne mulighed for at administrere containere via et REST API uden at skulle administrere servere eller klynger. For at kunne bruge Zun skal du have tre andre OpenStack-tjenester, nemlig Keystone, Neutron og kryr-libnetwork. Zuns funktionalitet kan også udvides gennem yderligere OpenStack-tjenester såsom Cinder og Glance.
- Neutron (netværkskomponent): Neutron (tidligere Quantum) er en bærbar, skalerbar API-understøttet systemkomponent, der bruges til netværksstyring. Modulet giver en grænseflade til komplekse netværkstopologier og understøtter forskellige plugins, hvorigennem udvidede netværksfunktioner kan integreres.
- kuryr-libnetwork (Docker-driver): kuryr-libnetwork er en driver, der fungerer som en grænseflade mellem Docker og Neutron.
- Cinder (bloklager): Cinder er kælenavnet for en komponent i OpenStack-arkitekturen, der leverer vedvarende bloklager til drift af VM’er. Modulet leverer virtuelt lager via en selvbetjenings-API. Gennem dette kan slutbrugere gøre brug af lagerressourcer uden at være klar over, hvilken enhed der leverer lageret.
- Keystone (identitetstjeneste): Keystone leverer en central identitetstjeneste til OpenStack-brugere. Modulet fungerer som et godkendelses- og tilladelsessystem mellem de enkelte OpenStack-komponenter. Adgangen til projekter i skyen reguleres af lejere. Hver lejer repræsenterer en bruger, og der kan defineres flere brugeradgange med forskellige rettigheder.
- Glance (billedtjeneste): Med Glance-modulet leverer OpenStack en tjeneste, der gør det muligt at gemme og hente billeder af virtuelle maskiner.
Du kan finde mere information om OpenStack-komponenter og -tjenester i vores artikel om OpenStack.
Ud over de ovennævnte komponenter kan OpenStack-arkitekturen udvides ved hjælp af forskellige moduler. Du kan læse mere om de forskellige valgfrie moduler på OpenStacks hjemmeside.
D2iQ DC/OS
DC/OS (Distributed Cloud Operating System) er et open source-program til drift af distribuerede systemer, udviklet af D2iQ Inc. (tidligere Mesosphere). Projektet er baseret på den open source-baserede clustermanager Apache Mesos og er et operativsystem til datacentre. Kildekoden er tilgængelig for brugere under Apache-licens version 2 i DC/OS-repositorierne på GitHub. En enterprise-version af softwaren er også tilgængelig på d2iq.com. Omfattende projektdokumentation kan findes på dcos.io.
Man kan betragte DC/OS som en Mesos-distribution, der giver dig adgang til alle clustermanagerens funktioner (via en central brugergrænseflade) og udvider Mesos betydeligt.
DC/OS bygger på Mesos-platformens kerne til distribuerede systemer. Dette gør det muligt at samle ressourcerne i et helt datacenter og administrere dem som et samlet system, ligesom en enkelt logisk server. På den måde kan du styre hele klynger af fysiske eller virtuelle maskiner lige så nemt, som du ville betjene en enkelt computer.
Softwaren forenkler installation og administration af distribuerede applikationer og automatiserer opgaver såsom ressourceadministration, planlægning og kommunikation mellem processer. Administrationen af et cluster baseret på D2iQ DC/OS samt de medfølgende tjenester foregår via et centralt kommandolinjeprogram (CLI) eller en webgrænseflade (GUI).
DC/OS isolerer klyngens ressourcer og leverer fælles tjenester, såsom tjenesteopdagelse og pakkehåndtering. Softwarens kernekomponenter kører i et beskyttet område – kernelkernen. Dette omfatter master- og agentprogrammerne i Mesos-platformen, som varetager ressourceallokering, procesisolering og sikkerhedsfunktioner.
- Mesos-master: Mesos-masteren er en masterproces, der kører på en master-node. Formålet med Mesos-masteren er at styre ressourcehåndteringen og koordinere opgaver (abstrakte arbejdsenheder), der udføres på en agent-node. Til dette formål fordeler Mesos-masteren ressourcer til registrerede DC/OS-tjenester og modtager ressourcerapporter fra Mesos-agenter.
- Mesos-agenter: Mesos-agenter er processer, der kører på agentkonti og er ansvarlige for at udføre de opgaver, der fordeles af masteren. Mesos-agenter leverer regelmæssige rapporter om de tilgængelige ressourcer i klyngen til Mesos-masteren. Disse videresendes af Mesos-masteren til en scheduler (dvs. Marathon, Chronos eller Cassandra). Denne beslutter, hvilken opgave der skal køres på hvilken node. Opgaverne udføres derefter i en container på en isoleret måde.
Alle øvrige systemkomponenter samt applikationer, der køres af Mesos-agenterne via executor, kører i brugerrummet. De grundlæggende komponenter i en standardinstallation af DC/OS er admin-routeren, Mesos DNS, en distribueret DNS-proxy, load balanceren Minuteman, scheduleren Marathon, Apache ZooKeeper og Exhibitor.
- Admin-router: Admin-routeren er en specielt konfigureret webserver baseret på NGINX, der leverer DC/OS-tjenester samt centrale godkendelses- og proxyfunktioner.
- Mesos DNS: Systemkomponenten Mesos DNS leverer serviceopdagelsesfunktioner, der gør det muligt for individuelle tjenester og applikationer i klyngen at identificere hinanden via et centralt domænenavnesystem (DNS).
- Distribueret DNS-proxy: Den distribuerede DNS-proxy er en intern DNS-dispatcher.
- Minuteman: Systemkomponenten Minuteman fungerer som en intern load balancer, der arbejder på transportlaget (Layer 4) i OSI-referencemodellen.
- DC/OS Marathon: Marathon er en central komponent i Mesos-platformen, der fungerer i D2iQ DC/OS som et init-system (svarende til systemd). Marathon starter og overvåger DC/OS-tjenester og -applikationer i klyngemiljøer. Derudover leverer softwaren højtilgængelighedsfunktioner, serviceopdagelse, belastningsbalancering, sundhedstjek og en grafisk webgrænseflade.
- Apache ZooKeeper: Apache ZooKeeper er en open source-softwarekomponent, der leverer koordineringsfunktioner til drift og styring af applikationer i distribuerede systemer. ZooKeeper bruges i D2iQ DC/OS til koordinering af alle installerede systemtjenester.
- Exhibitor: Exhibitor er en systemkomponent, der automatisk installeres og konfigureres sammen med ZooKeeper på hver master-node. Exhibitor leverer også en grafisk brugergrænseflade til ZooKeeper-brugere.
Forskellige arbejdsopgaver kan udføres samtidigt på klyngeressourcer, der samles via DC/OS. Dette muliggør for eksempel parallel drift på klyngeoperativsystemet af big data-systemer, mikrotjenester eller containerplatforme som Hadoop, Spark og Docker.
I D2iQ Universe findes der et offentligt app-katalog til DC/OS. Her kan du installere applikationer som Spark, Cassandra, Chronos, Jenkins eller Kafka ved blot at klikke i den grafiske brugergrænseflade.
Hvilke Docker-værktøjer findes der til sikkerhed?
Selvom indkapslede processer, der kører i containere, deler den samme kerne, bruger Docker en række teknikker til at isolere dem fra hinanden. Til dette formål anvendes der typisk centrale funktioner i Linux-kernen, såsom Cgroups og Namespaces.
Containere tilbyder dog stadig ikke samme grad af isolation, som man kan opnå med virtuelle maskiner. På trods af brugen af isoleringsteknikker kan vigtige kernesubsystemer som f.eks. Cgroups samt kernegrænseflader i mapperne /sys og /proc nås via containere.
Docker-udviklerteamet har erkendt, at disse sikkerhedsproblemer udgør en hindring for indførelsen af containerteknologi i produktionssystemer. Ud over de grundlæggende isoleringsteknikker i Linux-kernen understøtter nyere versioner af Docker Engine også rammeværkerne AppArmor, SELinux og Seccomp, som fungerer som en slags firewall for centrale ressourcer.
- AppArmor: Med AppArmor reguleres containernes adgangsrettigheder til filsystemerne.
- SELinux: SELinux tilbyder et komplekst reguleringssystem, hvor adgangskontrol til centrale ressourcer kan implementeres.
- Seccomp: Seccomp (Secure Computing Mode) overvåger udførelsen af systemkald.
Ud over disse Docker-værktøjer benytter Docker sig også af Linux-funktioner til at begrænse de root-rettigheder, som Docker Engine starter containere med.
Der er også andre sikkerhedsmæssige bekymringer vedrørende sårbarheder i software inden for applikationskomponenter, der distribueres via Docker-registret. Da stort set alle kan oprette Docker-billeder og gøre dem offentligt tilgængelige for fællesskabet på Docker Hub, er der en risiko for, at der indføres ondsindet kode i dit system, når du downloader et billede. Inden en applikation tages i brug, bør Docker-brugere sikre sig, at al kode i et billede, der bruges til at køre containere, stammer fra en pålidelig kilde.
Docker tilbyder et verifikationsprogram, som softwareudbydere kan benytte til at få deres Docker-images kontrolleret og verificeret. Med dette verifikationsprogram ønsker Docker at gøre det lettere for udviklere at opbygge sikre softwareleverandørkæder til deres projekter. Ud over at øge sikkerheden for brugerne har programmet til formål at give softwareudviklere en mulighed for at differentiere deres projekter fra de mange andre ressourcer, der findes på markedet. Verificerede billeder er markeret med et “Verified Publisher “-badge og får, ud over andre fordele, en højere placering i søgeresultaterne på Docker Hub.