Wat zijn de beste Docker-tools? Een overzicht
Het uitgebreide Docker-ecosysteem biedt ontwikkelaars een aantal mogelijkheden om applicaties te implementeren, containers te orkestreren en meer. We bespreken de belangrijkste Docker-tools en geven u een overzicht van de populairste projecten van derden die open-source Docker-tools ontwikkelen.
Wat zijn de essentiële Docker-tools/componenten?
Tegenwoordig is Docker veel meer dan alleen een geavanceerd platform voor het beheer van softwarecontainers. Ontwikkelaars hebben een reeks diverse Docker-tools gecreëerd om het implementeren van applicaties via gedistribueerde infrastructuur en cloudomgevingen eenvoudiger, sneller en flexibeler te maken. Naast tools voor clustering en orkestratie is er ook een centrale app-marktplaats en een tool voor het beheer van cloudresources.
Docker-engine
Wanneer ontwikkelaars het over ‘Docker’ hebben, bedoelen ze meestal de open-source client-serverapplicatie diede basis vormt van het containerplatform. Deze applicatie wordt Docker Engine genoemd. Centrale onderdelen van Docker Engine zijn de Docker-daemon, een REST API en een CLI (command line interface) die als gebruikersinterface fungeert.
Met dit ontwerp kunt u via opdrachtregelopdrachten communiceren met Docker Engine en Docker-images, Docker-bestanden en Docker-containers gemakkelijk beheren vanaf de terminal.

Een gedetailleerde beschrijving van Docker Engine vindt u in onze Docker-handleiding voor beginners : Docker-handleiding: installatie en eerste stappen.
Docker Hub
Docker Hub biedt gebruikers een cloudgebaseerd register waarmee Docker-images kunnen worden gedownload, centraal beheerd en gedeeld met andere Docker-gebruikers. Geregistreerde gebruikers kunnen Docker-images openbaar of in privé-repositories opslaan. Voor het downloaden van een openbaar image (in Docker-terminologie ‘pulling’ genoemd) is geen gebruikersaccount vereist. Een geïntegreerd tagmechanisme maakt het mogelijk om versies van images bij te houden.
Naast de openbare repositories van andere Docker-gebruikers zijn er ook veel bronnen van het Docker-ontwikkelaarsteam en bekende open-sourceprojecten te vinden in de officiële repositories in Docker Hub. De populairste Docker-images zijn onder andere de NGINX-webserver, de Redis-in-memory-database, de BusyBox Unix-toolkit en de Ubuntu Linux-distributie.

Organisaties zijn een andere belangrijke functie van Docker Hub, waarmee Docker-gebruikers privé-repositories kunnen aanmaken die uitsluitend beschikbaar zijn voor een selecte groep mensen. Toegangsrechten worden binnen een organisatie beheerd met behulp van teams en groepslidmaatschappen.
Docker Swarm
Docker Engine bevat een native functie waarmee gebruikers Docker-hosts kunnen beheren in clusters die swarms worden genoemd. De clusterbeheer- en orchestrationmogelijkheden die in de Docker-engine zijn ingebouwd, zijn gebaseerd op de Swarmkit-toolbox. Als u een oudere versie van het containerplatform gebruikt, is de Docker-tool beschikbaar als zelfstandige applicatie.
Als native Docker-clusteringtool verzamelt Swarm een pool van Docker-hosts in één virtuele host en bedient het de Docker REST API. Elke Docker-tool die is gekoppeld aan de Docker-daemon heeft toegang tot Swarm en kan worden geschaald over een willekeurig aantal Docker-hosts. Met de Docker Engine CLI kunnen gebruikers swarms maken, applicaties in het cluster distribueren en het gedrag van de swarm beheren zonder dat daarvoor aanvullende orchestration-software nodig is.
Docker-engines die zijn samengevoegd tot clusters, draaien in swarm-modus. Selecteer deze optie als u een nieuw cluster wilt maken of een Docker-host wilt toevoegen aan een bestaande swarm. Afzonderlijke Docker-hosts in een cluster worden ‘knooppunten’ genoemd. De knooppunten van een cluster kunnen als virtuele hosts op hetzelfde lokale systeem draaien, maar vaker wordt een cloudgebaseerd ontwerp gebruikt, waarbij de afzonderlijke knooppunten van de Docker-swarm zijn verdeeld over verschillende systemen en infrastructuren.
De software is gebaseerd op een master-worker-architectuur. Wanneer taken in de swarm moeten worden verdeeld, geven gebruikers een service door aan het managerknooppunt. De manager is vervolgens verantwoordelijk voor het plannen van containers in het cluster en fungeert als primaire gebruikersinterface voor toegang tot swarm-bronnen.
De manager-node stuurt individuele eenheden, ook wel taken genoemd, naar worker-nodes.
- Services: services zijn centrale structuren in Docker-clusters. Een service definieert een taak die in een Docker-cluster moet worden uitgevoerd. Een service heeft betrekking op een groep containers die op dezelfde image zijn gebaseerd. Bij het aanmaken van een service geeft de gebruiker aan welke image en commando’s worden gebruikt. Daarnaast bieden services de mogelijkheid om applicaties te schalen. Gebruikers van het Docker-platform definiëren eenvoudig hoeveel containers er voor een service moeten worden gestart.
- Taken: om services in het cluster te verdelen, worden ze door het beheerknooppunt opgedeeld in afzonderlijke werkeenheden (taken). Elke taak omvat een Docker-container en de commando’s die daarin worden uitgevoerd.
Naast het beheer van clustercontrole en de coördinatie van containers, kunnen manager-knooppunten standaard ook worker-knooppuntfuncties uitvoeren, tenzij u de taken van deze knooppunten strikt beperkt tot beheer.
Op elke worker node draait een agentprogramma. Dit programma accepteert taken en verstrekt de respectieve principal node statusrapporten over de voortgang van de overgedragen taak. De volgende afbeelding toont een schematische weergave van een Docker Swarm:

Bij het implementeren van een Docker Swarm vertrouwen gebruikers over het algemeen op de Docker-machine.
Docker Compose
Met Docker Compose is het mogelijk om meerdere containers samen te voegen en met één enkele opdracht uit te voeren. Het basiselement van Compose is het centrale besturingsbestand op basis van de bekroonde taal YAML. De syntaxis van dit compose-bestand is vergelijkbaar met die van de open-source software Vagrant, die wordt gebruikt bij het maken en inrichten van virtuele machines.
In het bestand docker-compose.yml kunt u een willekeurig aantal softwarecontainers definiëren, inclusief alle afhankelijkheden, evenals hun onderlinge relaties. Dergelijke multi-containerapplicaties worden volgens hetzelfde patroon beheerd als individuele softwarecontainers. Gebruik het commandodocker-compose in combinatie met het gewenste subcommando om de volledige levenscyclus van de applicatie te beheren.
Deze Docker-tool kan eenvoudig worden geïntegreerd in een cluster op basis van Swarm. Op deze manier kunt u multi-container applicaties die zijn gemaakt met Compose net zo eenvoudig uitvoeren op gedistribueerde systemen als op een enkele Docker-host.
Een ander kenmerk van Docker Compose is een geïntegreerd schaalbaarheidsmechanisme. Met de orchestration tool kunt u eenvoudig via het command-line programma instellen hoeveel containers u voor een bepaalde service wilt starten.
Welke Docker-tools van derden zijn er?
Naast de interne ontwikkeling van Docker Inc. zijn er verschillende softwaretools en platforms van externe aanbieders die interfaces voor de Docker Engine bieden of speciaal zijn ontwikkeld voor het populaire containerplatform. Binnen het Docker-ecosysteem behoren tot de populairste open-sourceprojecten de orchestration-tool Kubernetes, de clustermanagementtool Shipyard, de multi-container shipping-oplossing Panamax, het continuous integration-platform Drone, het cloudgebaseerde besturingssysteem OpenStack en het D2iQ DC/OS-datacenterbesturingssysteem, dat is gebaseerd op de clustermanager Mesos.
Kubernetes
Het is niet altijd mogelijk voor Docker om eigen orchestration tools zoals Swarm en Compose te ontwikkelen. Om deze reden investeren verschillende bedrijven al jaren in eigen ontwikkelingswerk om op maat gemaakte tools te creëren die zijn ontworpen om de werking van het containerplatform in grote, gedistribueerde infrastructuren te vergemakkelijken. Een van de populairste oplossingen van dit type is het open-sourceproject Kubernetes.
Kubernetes is een clustermanager voor containergebaseerde applicaties. Het doel van Kubernetes is om applicaties in een cluster te automatiseren. Hiervoor maakt de orchestration tool gebruik van een REST-API, een command line programma en een grafische webinterface als besturingsinterfaces. Met deze interfaces kunnen automatiseringen worden gestart en statusrapporten worden opgevraagd. Je kunt Kubernetes gebruiken om:
- containergebaseerde foto’s uitvoeren op een cluster,
- applicaties installeren en beheren in gedistribueerde systemen,
- applicaties schalen, en
- hardware zo goed mogelijk gebruiken.
Daartoe combineert Kubernetes containers tot logische delen, die pods worden genoemd. Pods vormen de basiseenheden van de clustermanager, die door middel van planning in de cluster kunnen worden verdeeld.
Net als Docker’s Swarm is Kubernetes ook gebaseerd op een master-worker-architectuur. Een cluster bestaat uit een Kubernetes-master en verschillende workers, ook wel Kubernetes-knooppunten (of minions) genoemd. De Kubernetes-master fungeert als een centraal besturingsvlak in het cluster en bestaat uit vier basiscomponenten, waardoor directe communicatie in het cluster en taakverdeling mogelijk zijn. Een Kubernetes-master bestaat uit een API-server, het configuratiegeheugen etcd, een planner en een controllerbeheerder.
- API-server: alle automatiseringen in het Kubernetes-cluster worden geïnitieerd met REST-API via een API-server. Deze fungeert als de centrale beheerinterface in het cluster.
- etcd: je kunt het open-source configuratiegeheugen etcd zien als het geheugen van een Kubernetes-cluster. De Key Value Store, die CoreOS speciaal voor gedistribueerde systemen heeft ontwikkeld, slaat configuratiegegevens op en maakt deze beschikbaar voor elk knooppunt in het cluster. De huidige status van een cluster kan op elk moment worden beheerd via etcd.
- Scheduler: de scheduler is verantwoordelijk voor de distributie van containergroepen (pods) in het cluster. Hij bepaalt de resourcebehoeften van een pod en koppelt deze vervolgens aan de beschikbare resources van de afzonderlijke knooppunten in het cluster.
- Controller manager: de controller manager is een service van de Kubernetes-master en regelt de orkestratie door de status van het cluster te reguleren en routinetaken uit te voeren. De belangrijkste taak van de controller manager is ervoor te zorgen dat de status van het cluster overeenkomt met de gedefinieerde doelstatus.
De algemene componenten van de Kubernetes-master kunnen zich op dezelfde host bevinden of verdeeld zijn over meerdere masterhosts binnen een cluster met hoge beschikbaarheid.
Terwijl de Kubernetes-master verantwoordelijk is voor de orkestratie, worden de pods die in het cluster zijn verdeeld, uitgevoerd op hosts, Kubernetes-knooppunten, die ondergeschikt zijn aan de master. Hiervoor moet op elk Kubernetes-knooppunt een container-engine worden uitgevoerd. Hoewel Docker de de facto standaard is, hoeft Kubernetes geen specifieke container-engine te gebruiken.
Naast de container-engine omvatten Kubernetes-knooppunten de volgende componenten:
- kubelet: kubelet is een agent die op elke Kubernetes-node draait en wordt gebruikt om de node te besturen en te beheren. Als centraal contactpunt van elke node is kubelet verbonden met de Kubernetes-master en zorgt ervoor dat informatie wordt doorgegeven aan en ontvangen van het besturingsvlak.
- kube-proxy: daarnaast draait de proxyservice kube-proxy op elke Kubernetes-node. Deze zorgt ervoor dat verzoeken van buitenaf worden doorgestuurd naar de betreffende containers en levert diensten aan gebruikers van containergebaseerde applicaties. De kube-proxy biedt ook rudimentaire load balancing.
De volgende afbeelding toont een schematische weergave van de master-node-architectuur waarop het orchestrationplatform Kubernetes is gebaseerd:

Naast het kernproject Kubernetes zijn er ook tal van tools en uitbreidingen waarmee je meer functionaliteit aan het orchestrationplatform kunt toevoegen. De populairste zijn de monitoring- en foutdiagnosetools Prometheus, Weave Scope en sysdig, evenals de pakketbeheerder Helm. Er zijn ook plug-ins voor Apache Maven en Gradle, evenals een Java API, waarmee je Kubernetes op afstand kunt bedienen.
Scheepswerf
Shipyard is een door de gemeenschap ontwikkelde beheeroplossing op basis van Swarm waarmee gebruikers Docker-bronnen zoals containers, images, hosts en privéregisters kunnen beheren via een grafische gebruikersinterface. Het is beschikbaar als webapplicatie via de browser. Naast de clusterbeheerfuncties die toegankelijk zijn via een centrale webinterface, biedt Shipyard ook gebruikersauthenticatie en op rollen gebaseerde toegangscontrole.
De software is 100% compatibel met de Docker remote API en maakt gebruik van de open-source NoSQL-database RethinkDB om gegevens voor gebruikersaccounts, adressen en gebeurtenissen op te slaan. De software is gebaseerd op de clustermanagement-toolkit Citadel en bestaat uit drie hoofdcomponenten: controller, API en UI.
- Shipyard-controller: de controller is het kernonderdeel van de beheertool Shipyard. De Shipyard-controller communiceert met RethinkDB om gegevens op te slaan en maakt het mogelijk om individuele hosts in een Docker-cluster aan te spreken en gebeurtenissen te beheren.
- Shipyard API: de Shipyard API is gebaseerd op REST. Alle functies van de managementtool worden aangestuurd via de Shipyard API.
- Shipyard-gebruikersinterface (UI): de Shipyard-UI is een AngularJS-app die gebruikers een grafische gebruikersinterface biedt voor het beheer van Docker-clusters in de webbrowser. Alle interacties in de gebruikersinterface vinden plaats via de Shipyard API.
Meer informatie over het open-sourceproject is te vinden op de officiële website van Shipyard.
Panamax
De ontwikkelaars van het open-source softwareproject Panamax willen de implementatie van multi-container apps vereenvoudigen. De gratis tool biedt gebruikers een grafische gebruikersinterface waarmee complexe applicaties op basis van Docker-containers gemakkelijk kunnen worden ontwikkeld, geïmplementeerd en gedistribueerd met behulp van drag-and-drop.
Panamax maakt het mogelijk om complexe multi-container applicaties op te slaan als applicatiesjablonen en deze met slechts één klik te distribueren in clusterarchitecturen. Met behulp van een geïntegreerde app-marktplaats die wordt gehost op GitHub, kunnen sjablonen voor zelfgemaakte applicaties worden opgeslagen in Git-repositories en beschikbaar worden gesteld aan andere gebruikers.
De basiscomponenten van de Panamax-architectuur kunnen worden onderverdeeld in twee groepen: de Panamax Local Client en een willekeurig aantal externe implementatiedoelen.
De lokale Panamax-client is het kernonderdeel van deze Docker-tool. Deze wordt uitgevoerd op het lokale systeem en maakt het mogelijk om complexe containergebaseerde applicaties te creëren. De lokale client bestaat uit de volgende onderdelen:
- CoreOS: voor de installatie van de lokale Panamax-client is de Linux-distributie CoreOS als hostsysteem vereist, dat speciaal is ontworpen voor softwarecontainers. De Panamax-client wordt vervolgens als Docker-container in CoreOS uitgevoerd. Naast de Docker-functies hebben gebruikers toegang tot verschillende CoreOS-functies. Deze omvatten onder andere Fleet en Journalctl:
- Fleet: in plaats van rechtstreeks te integreren met Docker, gebruikt de Panamax-client de clustermanager Fleet om zijn containers te orkestreren. Fleet is een clustermanager die het Linux-daemonsysteem systemd in computerclusters aanstuurt.
- Journalctl: de Panamax-client gebruikt Journalctl om logberichten op te vragen uit het journaal van de Linux-systeembeheerder systemd.
- Lokale client-installatieprogramma: het lokale client-installatieprogramma bevat alle componenten die nodig zijn om de Panamax-client op een lokaal systeem te installeren.
- Lokale Panamax-agent: de centrale component van de lokale client is de lokale agent. Deze is via de Panamax API gekoppeld aan verschillende andere componenten en afhankelijkheden. Deze omvatten de lokale Docker-host, de Panamax UI, externe registers en de externe agents van de implementatiedoelen in het cluster. De lokale agent communiceert via de Panamax API met de volgende programma-interfaces op het lokale systeem om informatie over actieve applicaties uit te wisselen:
- Docker remote API: Panamax zoekt via de Docker remote API naar images op het lokale systeem en verkrijgt informatie over actieve containers.
- etcd API: bestanden worden via de etcd API naar de CoreOS Fleet-daemon verzonden.
- systemd-journal-gatewayd.services: Panamax verkrijgt de journaaluitvoer van actieve services via systemd-journal-gatewayd.services.
Daarnaast maakt de Panamax API ook interacties met verschillende externe API’s mogelijk.
- Docker-register-API: Panamax haalt imagetags op uit het Docker-register via de Docker-register-API.
- GitHub API: Panamax laadt sjablonen uit de GitHub-repository met behulp van de GitHub API.
- KissMetrics API: de KissMetrics API verzamelt gegevens over sjablonen die gebruikers uitvoeren.
- Panamax UI: de Panamax UI fungeert als een gebruikersinterface op het lokale systeem en stelt gebruikers in staat om de Docker-tool te bedienen via een grafische interface. Gebruikersinput wordt rechtstreeks doorgestuurd naar de lokale agent via de Panamax API. De Panamax UI is gebaseerd op de CTL Base UI Kit, een bibliotheek met UI-componenten voor webprojecten van CenturyLink.
In Panamax-terminologie wordt elk knooppunt in een Docker-cluster zonder beheertaken een remote deployment target genoemd. Deployment targets bestaan uit een Docker-host, die is geconfigureerd om Panamax-sjablonen te implementeren met behulp van de volgende componenten:
- Installatieprogramma voor implementatiedoel: het installatieprogramma voor implementatiedoel start een Docker-host, compleet met een Panamax-remote agent en orchestration adapter.
- Panamax-agent op afstand: als een Panamax-agent op afstand is geïnstalleerd, kunnen applicaties via de lokale Panamax-client worden gedistribueerd naar elk gewenst eindpunt in het cluster. De Panamax-agent op afstand draait als een Docker-container op elk implementatiedoel in het cluster.
- Panamax-orkestratieadapter: in de orkestratieadapter wordt de programmalogica voor elke orkestratietool die beschikbaar is voor Panamax in een onafhankelijke adapterlaag aangeboden. Hierdoor hebben gebruikers altijd de mogelijkheid om precies die orkestratietechnologie te kiezen die door hun doelomgeving wordt ondersteund. Vooraf geconfigureerde adapters zijn onder andere Kubernetes en Fleet:
- Panamax Kubernetes-adapter: in combinatie met de Panamax Remote Agent maakt de Panamax Kubernetes-adapter de distributie van Panamax-sjablonen in Kubernetes-clusters mogelijk.
- Panamax Fleet-adapter: in combinatie met de Panamax remote agent maakt de Panamax Fleet-adapter de distributie van Panamax-sjablonen mogelijk in clusters die worden beheerd met behulp van de Fleet-clustermanager.
De volgende afbeelding toont de interactie tussen de afzonderlijke Panamax-componenten in een Docker-cluster:

De op CoreOS gebaseerde Panamax-containerbeheertool biedt gebruikers via een grafische gebruikersinterface een verscheidenheid aan standaardtechnologieën voor containerorkestratie, evenals de mogelijkheid om complexe multi-containerapplicaties in clusterarchitecturen gemakkelijk te beheren met behulp van elk systeem (bijvoorbeeld uw eigen laptop).
Met de openbare sjabloonbibliotheek van Panamax hebben Panamax-gebruikers via GitHub toegang tot een openbare sjabloonbibliotheek met verschillende bronnen.
Drone
Drone is een slank continu integratieplatform met minimale vereisten. Met deze Docker-tool kunt u automatisch uw nieuwste build laden vanuit een Git-repository zoals GitHub en deze testen in geïsoleerde Docker-containers. U kunt elke testsuite uitvoeren en rapporten en statusberichten via e-mail verzenden. Voor elke softwaretest wordt een nieuwe container gemaakt op basis van afbeeldingen uit het openbare Docker-register. Dit betekent dat elke openbaar beschikbare Docker-afbeelding kan worden gebruikt als omgeving voor het testen van de code.
Drone is geïntegreerd in Docker en wordt ondersteund door verschillende programmeertalen, zoals PHP, Node.js, Ruby, Go en Python. Het containerplatform is de enige echte afhankelijkheid. U kunt uw eigen persoonlijke continue integratieplatform met Drone creëren op elk systeem waarop Docker kan worden geïnstalleerd. Drone ondersteunt verschillende versiebeheerrepositories en u kunt een handleiding voor de standaardinstallatie met GitHub-integratie vinden op de website van het open source-project onder readme.drone.io.
Het beheer van het continue integratieplatform gebeurt via een webinterface. Hier kunt u softwarebuilds vanuit elke Git-repository laden, deze samenvoegen tot applicaties en het resultaat uitvoeren in een vooraf gedefinieerde testomgeving. Hiervoor wordt een .drone.yml-bestand gedefinieerd dat aangeeft hoe de applicatie voor elke softwaretest moet worden gemaakt en uitgevoerd.
Drone-gebruikers krijgen een open-source CI-oplossing die de sterke punten van alternatieve producten zoals Travis en Jenkins combineert in een gebruiksvriendelijke applicatie.
OpenStack
Als het gaat om het bouwen en exploiteren van open-source cloudstructuren, is het open-source cloudbesturingssysteem OpenStack de softwareoplossing bij uitstek.
Met OpenStack kunt u computer-, opslag- en netwerkbronnen beheren vanuit een centraal dashboard en deze via een webinterface beschikbaar stellen aan eindgebruikers.
Het cloudbesturingssysteem is gebaseerd op een modulaire architectuur die uit meerdere componenten bestaat:
- Zun (containerservice): Zun is de containerservice van OpenStack en maakt het eenvoudig om gecontaineriseerde applicaties in de OpenStack-cloud te implementeren en te beheren. Het doel van Zun is om gebruikers in staat te stellen containers te beheren via een REST API zonder dat ze servers of clusters hoeven te beheren. Om Zun te kunnen gebruiken, hebt u drie andere OpenStack-services nodig, namelijk Keystone, Neutorn en kryr-libnetwork. De functionaliteit van Zun kan ook worden uitgebreid met aanvullende OpenStack-services zoals Cinder en Glance.
- Neutron (netwerkcomponent): Neutron (voorheen Quantum) is een draagbare, schaalbare API-ondersteunde systeemcomponent die wordt gebruikt voor netwerkbeheer. De module biedt een interface voor complexe netwerktopologieën en ondersteunt verschillende plug-ins waarmee uitgebreide netwerkfuncties kunnen worden geïntegreerd.
- kuryr-libnetwork (Docker-driver): kuryr-libnetwork is een driver die fungeert als interface tussen Docker en Neutron.
- Cinder (blokopslag): Cinder is de bijnaam van een component in de OpenStack-architectuur die permanente blokopslag biedt voor de werking van VM’s. De module biedt virtuele opslag via een selfservice-API. Hierdoor kunnen eindgebruikers gebruikmaken van opslagbronnen zonder te weten welk apparaat de opslag levert.
- Keystone (identiteitsservice): Keystone biedt OpenStack-gebruikers een centrale identiteitsservice. De module functioneert als een authenticatie- en machtigingssysteem tussen de afzonderlijke OpenStack-componenten. De toegang tot projecten in de cloud wordt geregeld door tenants. Elke tenant vertegenwoordigt een gebruiker en er kunnen meerdere gebruikerstoegangen met verschillende rechten worden gedefinieerd.
- Glance (beeldservice): met de Glance-module biedt OpenStack een service waarmee afbeeldingen van VM’s kunnen worden opgeslagen en opgehaald.
Meer informatie over OpenStack-componenten en -services vindt u in ons artikel over OpenStack.
Naast de hierboven genoemde componenten kan de OpenStack-architectuur worden uitgebreid met verschillende modules. Op de website van OpenStack vindt u meer informatie over de verschillende optionele modules.
D2iQ DC/OS
DC/OS (Distributed Cloud Operating System) is open-source software voor het beheer van gedistribueerde systemen, ontwikkeld door D2iQ Inc. (voorheen Mesosphere). Het project is gebaseerd op de open-source clustermanager Apache Mesos en is een besturingssysteem voor datacenters. De broncode is voor gebruikers beschikbaar onder de Apache-licentie versie 2 in de DC/OS-repositories op GitHub. Een enterprise-versie van de software is ook beschikbaar op d2iq.com. Uitgebreide projectdocumentatie is te vinden op dcos.io.
Je kunt DC/OS zien als een Mesos-distributie die je alle functies van de clustermanager biedt (via een centrale gebruikersinterface) en Mesos aanzienlijk uitbreidt.
DC/OS maakt gebruik van de gedistribueerde systeemkern van het Mesos-platform. Hierdoor is het mogelijk om de resources van een volledig datacenter te bundelen en te beheren in de vorm van een geaggregeerd systeem, zoals een enkele logische server. Op deze manier kunt u volledige clusters van fysieke of virtuele machines net zo eenvoudig beheren als een enkele computer.
De software vereenvoudigt de installatie en het beheer van gedistribueerde applicaties en automatiseert taken zoals resourcebeheer, planning en communicatie tussen processen. Het beheer van een cluster op basis van D2iQ DC/OS en de bijbehorende services vindt plaats via een centraal command line-programma (CLI) of een webinterface (GUI).
DC/OS isoleert de resources van het cluster en biedt gedeelde diensten, zoals service discovery of pakketbeheer. De kerncomponenten van de software draaien in een beschermd gebied: de kernkernel. Deze omvat de master- en agentprogramma’s van het Mesos-platform, die verantwoordelijk zijn voor resourceallocatie, procesisolatie en beveiligingsfuncties.
- Mesos-master: de Mesos-master is een masterproces dat op een masterknooppunt draait. Het doel van de Mesos-master is om het resourcebeheer te controleren en taken (abstracte werkeenheden) te coördineren die op een agentknooppunt worden uitgevoerd. Hiervoor verdeelt de Mesos-master resources over geregistreerde DC/OS-services en accepteert hij resourcerapporten van Mesos-agents.
- Mesos-agents: Mesos-agents zijn processen die op agentaccounts draaien en verantwoordelijk zijn voor het uitvoeren van de taken die door de master worden verdeeld. Mesos-agents leveren regelmatig rapporten over de beschikbare resources in het cluster aan de Mesos-master. Deze worden door de Mesos-master doorgestuurd naar een planner (d.w.z. Marathon, Chronos of Cassandra). Deze bepaalt welke taak op welk knooppunt moet worden uitgevoerd. De taken worden vervolgens op een geïsoleerde manier uitgevoerd in een container.
Alle andere systeemcomponenten en applicaties die door de Mesos-agents via executor worden uitgevoerd, draaien in de gebruikersruimte. De basiscomponenten van een standaard DC/OS-installatie zijn de admin router, de Mesos DNS, een gedistribueerde DNS-proxy, de load balancer Minuteman, de scheduler Marathon, Apache ZooKeeper en Exhibitor.
- Admin router: de admin router is een speciaal geconfigureerde webserver op basis van NGINX die DC/OS-services en centrale authenticatie- en proxyfuncties biedt.
- Mesos DNS: de systeemcomponent Mesos DNS biedt service discovery-functies waarmee individuele services en applicaties in het cluster elkaar kunnen identificeren via een centraal domeinnaamsysteem (DNS).
- Gedistribueerde DNS-proxy: de gedistribueerde DNS-proxy is een interne DNS-dispatcher.
- Minuteman: de systeemcomponent Minuteman functioneert als een interne load balancer die werkt op de transportlaag (laag 4) van het OSI-referentiemodel.
- DC/OS Marathon: Marathon is een centrale component van het Mesos-platform die in D2iQ DC/OS functioneert als een init-systeem (vergelijkbaar met systemd). Marathon start en controleert DC/OS-services en -toepassingen in clusteromgevingen. Daarnaast biedt de software functies voor hoge beschikbaarheid, service discovery, load balancing, health checks en een grafische webinterface.
- Apache ZooKeeper: Apache ZooKeeper is een open source softwarecomponent die coördinatiefuncties biedt voor de werking en controle van applicaties in gedistribueerde systemen. ZooKeeper wordt in D2iQ DC/OS gebruikt voor de coördinatie van alle geïnstalleerde systeemservices.
- Exhibitor: Exhibitor is een systeemcomponent die automatisch wordt geïnstalleerd en geconfigureerd met ZooKeeper op elke masterknoop. Exhibitor biedt ook een grafische gebruikersinterface voor ZooKeeper-gebruikers.
Diverse workloads kunnen tegelijkertijd worden uitgevoerd op clusterresources die zijn samengevoegd via DC/OS. Dit maakt bijvoorbeeld parallelle werking mogelijk op het clusterbesturingssysteem van big data-systemen, microservices of containerplatforms zoals Hadoop, Spark en Docker.
Binnen het D2iQ Universe is een openbare app-catalogus beschikbaar voor DC/OS. Hiermee kunt u applicaties zoals Spark, Cassandra, Chronos, Jenkins of Kafka installeren door simpelweg op de grafische gebruikersinterface te klikken.
Welke Docker-tools zijn er voor beveiliging?
Hoewel ingekapselde processen die in containers draaien dezelfde kern delen, gebruikt Docker een aantal technieken om ze van elkaar te isoleren. Hiervoor worden meestal kernfuncties van de Linux-kernel gebruikt, zoals Cgroups en Namespaces.
Containers bieden echter nog steeds niet dezelfde mate van isolatie als virtuele machines. Ondanks het gebruik van isolatietechnieken zijn belangrijke kernsubsystemen zoals Cgroups en kernelinterfaces in de mappen /sys en /proc via containers bereikbaar.
Het ontwikkelingsteam van Docker heeft erkend dat deze veiligheidsproblemen een obstakel vormen voor de implementatie van containertechnologie in productiesystemen. Naast de fundamentele isolatietechnieken van de Linux-kernel ondersteunen nieuwere versies van Docker Engine ook de frameworks AppArmor, SELinux en Seccomp, die fungeren als een soort firewall voor kernbronnen.
- AppArmor: met AppArmor worden de toegangsrechten van containers tot de bestandssystemen gereguleerd.
- SELinux: SELinux biedt een complex reguleringssysteem waarmee toegangscontrole tot kernbronnen kan worden geïmplementeerd.
- Seccomp: Seccomp (Secure Computing Mode) houdt toezicht op het aanroepen van systeemaanroepen.
Naast deze Docker-tools maakt Docker ook gebruik van Linux-mogelijkheden om de root-rechten te beperken waarmee Docker Engine containers start.
Er zijn ook andere veiligheidsrisico’s met betrekking tot kwetsbaarheden in software binnen applicatiecomponenten die worden gedistribueerd door het Docker-register. Aangezien in principe iedereen Docker-images kan maken en deze openbaar toegankelijk kan maken voor de community in de Docker Hub, bestaat het risico dat er bij het downloaden van een image kwaadaardige code in uw systeem terechtkomt. Voordat een applicatie wordt geïmplementeerd, moeten Docker-gebruikers ervoor zorgen dat alle code in een image voor de uitvoering van containers afkomstig is van een betrouwbare bron.
Docker biedt een verificatieprogramma waarmee softwareleveranciers hun Docker-images kunnen laten controleren en verifiëren. Met dit verificatieprogramma wil Docker het voor ontwikkelaars gemakkelijker maken om veilige softwaretoeleveringsketens voor hun projecten op te zetten. Naast het verhogen van de veiligheid voor gebruikers, wil het programma softwareontwikkelaars een manier bieden om hun projecten te onderscheiden van de vele andere beschikbare bronnen. Geverifieerde images worden gemarkeerd met een Verified Publisher- badge en krijgen, naast andere voordelen, een hogere positie in de zoekresultaten van Docker Hub.