- Met Docker Swarm kunt u clusters van knooppunten creëren om gecontaineriseerde services te orkestreren met hoge beschikbaarheid en geïntegreerde taakverdeling.
- De concepten knooppunt, manager, worker, service, taak en overlay-netwerken vormen de basis voor het begrijpen van hoe Swarm containers beheert en distribueert.
- Commando's zoals `docker swarm init`, `docker service create` of `docker service scale` maken het eenvoudig om applicaties te implementeren, schalen en updaten.
- Swarm is zeer geschikt voor kleine en middelgrote projecten en integreert met cloudservices, DevOps-praktijken, AI en business intelligence.

Het beheren van tientallen of honderden containers verspreid over meerdere machines kan een flinke uitdaging worden als je alleen op een kale Docker-installatie vertrouwt. Wanneer je het hebt over hoge beschikbaarheid, automatisch schalen of implementaties zonder downtime, heb je meer nodig dan alleen individuele containers: je hebt containerorkestratie nodig . En dat is waar Docker Swarm om de hoek komt kijken, de native Docker-oplossing voor het coördineren van containers in een cluster.
Als je Docker Compose op één machine gebruikt en merkt dat het niet geschikt is voor de praktijk, is Swarm de logische volgende stap. Met Swarm kun je een cluster van knooppunten opzetten, services erover verdelen, de belasting balanceren, vastgelopen containers vervangen en uiteindelijk een groot aantal servers transformeren tot één samenhangend, productieklaar platform, zonder direct over te stappen op Kubernetes als je dat te omslachtig of complex vindt.
Wat is Docker Swarm en waarom is het belangrijk voor containerorkestratie?
Docker Swarm is de clustering- en orchestratie-engine die direct in Docker is ingebouwd. Het is geen externe tool, maar een werkingsmodus van de Docker Engine zelf waarmee je meerdere machines (fysiek of virtueel) kunt groeperen in een logisch cluster, een zogenaamde swarm, waarop je services implementeert in plaats van geïsoleerde containers.
Het mooie van Swarm is dat het de volledige set knooppunten abstraheert , waardoor je kunt werken alsof je één enkele "superserver" hebt. Je definieert services, het aantal replica's, de blootgestelde poorten en de beperkingen, en Swarm bepaalt waar elke container (taak) moet worden uitgevoerd, hoe ze moeten worden herverdeeld als een knooppunt uitvalt en hoe het verkeer erover moet worden verdeeld.
Wat betreft containerorkestratie voldoet Docker Swarm aan de typische behoeften van veel DevOps-teams: eenvoudige horizontale schaling, basis hoge beschikbaarheid, interne load balancing, gelaagde netwerken tussen knooppunten en gecontroleerde implementaties, waardoor het geschikt is voor microservices-architecturen . Het is met name interessant voor kleine en middelgrote projecten, of voor organisaties die zeer vertrouwd zijn met het Docker-ecosysteem en niet de volledige complexiteit van Kubernetes nodig hebben.
Swarm is uitermate geschikt voor scenario's waarin eenvoud essentieel is : labs, stagingomgevingen, on-premises clusters binnen een mkb-bedrijf, of zelfs cloudproductie wanneer u geen complex platform wilt beheren. Bovendien integreert het naadloos met CI/CD-pipelines en DevOps-praktijken die al Docker gebruiken voor het verpakken van applicaties.
Kernbegrippen in Docker Swarm: knooppunten, services en netwerken
Voordat je als een bezetene commando's begint in te typen , is het essentieel om te begrijpen hoe Swarm naar elk onderdeel van de puzzel verwijst. Dit zijn de concepten die je constant zult tegenkomen in de CLI en de documentatie.
Een node is elke machine die deel uitmaakt van de swarm; dit kan een fysieke server zijn, een virtuele machine in de cloud, of zelfs je laptop in een testomgeving. Elke node draait Docker Engine en registreert zich bij het cluster met behulp van een specifieke rol.
Managerknooppunt : Dit is het brein van het cluster. Het is verantwoordelijk voor het handhaven van de gewenste status, het plannen van taken en het coördineren van bewerkingen. Er kunnen meerdere managers zijn om een hoge beschikbaarheid van het besturingsvlak te garanderen, maar één ervan fungeert als leider en coördineert de rest.
Werkknooppunten : Dit zijn de "werkers" van de swarm. Ze nemen geen beslissingen over de orkestratie; ze voeren simpelweg de taken (containers) uit die door de manager aan hen zijn toegewezen. Hierdoor kan de rekenkracht worden opgeschaald door naar behoefte meer werkers toe te voegen.
Een service is de implementatie-eenheid in Swarm. Deze definieert de te gebruiken containerimage, het aantal replica's, poorten, omgevingsvariabelen, configuraties, geheimen en andere opties. In tegenstelling tot het uitvoeren van een enkele container met `docker run`, beschrijft `docker service create` een service die Swarm in de gewenste staat onderhoudt.
Een taak is een concrete instantie van een container die is gekoppeld aan een service en is toegewezen aan een node. Als je een service aanvraagt met 3 replica's, maakt Swarm 3 taken aan. Als een taak mislukt, maakt de manager een nieuwe taak aan om het aantal replica's te behouden.
Overlay-netwerk : Dit is een type gedistribueerd virtueel netwerk waarmee containers op verschillende knooppunten met elkaar kunnen communiceren alsof ze zich op hetzelfde lokale netwerk bevinden. Swarm gebruikt deze overlay-netwerken om services te verbinden, taakverdeling tussen replica's toe te passen en applicaties van elkaar te isoleren.
Eerste stappen: het initialiseren en testen van een Docker Swarm-cluster
Het opzetten van een basis-swarm is verrassend eenvoudig als je Docker al op je machines hebt geïnstalleerd. Je hebt geen extra software nodig: schakel gewoon de swarm-modus in en voeg knooppunten toe aan het cluster.
Stap 1: Maak de eerste manager aan . Voer op de machine die u als initiële manager-node wilt gebruiken het volgende commando uit:
docker swarm init –advertise-addr
De parameter `--advertise-addr` specificeert het IP-adres dat andere knooppunten zullen gebruiken om deze manager te bekijken. Na het uitvoeren van de opdracht zal Docker automatisch een token en een opdracht weergeven, zodat andere knooppunten zich als workers bij de swarm kunnen aansluiten.
Stap 2: Voeg de worker-nodes toe aan het cluster . Voer op elke machine die als worker zal fungeren een opdracht uit die vergelijkbaar is met:
docker swarm join –token :2377
Het join-token en het IP-adres van de manager worden weergegeven door het commando `docker swarm init`. Poort 2377 wordt standaard gebruikt voor de communicatie met de besturing. Vanaf dat moment zal het knooppunt deel uitmaken van de swarm en klaar zijn om taken te ontvangen.
Het controleren van de clusterstatus is heel eenvoudig: ga naar een manager (het werkt niet op een geïsoleerde worker) en voer de volgende opdracht uit:
docker node ls
Met dit commando zie je alle knooppunten in de swarm , hun ID, hostnaam, rol (manager of worker) en huidige status. Hieruit kun je opmaken of een knooppunt niet werkt, in de drain-modus staat of verbindingsproblemen ondervindt.
Services implementeren in Docker Swarm: van de eerste nginx tot productie
Zodra het cluster operationeel is , begint het interessante gedeelte: het implementeren van services. In plaats van individuele containers te starten met `docker run`, definieer je services die Swarm automatisch beheert en herverdeelt.
Het opzetten van een eenvoudige service zoals een Nginx-webserver die toegankelijk is van buiten het cluster, gebeurt met een commando als dit:
docker service create –name my-nginx -p 80:80 nginx
Dit start een service genaamd my-nginx die poort 80 van de container beschikbaar stelt aan poort 80 van de clusterknooppunten. Swarm zorgt voor het publiceren van de service en het verdelen van inkomende verzoeken over de verschillende replica's naarmate je deze opschaalt.
Door de geïmplementeerde services in kaart te brengen, kunt u bijhouden wat er in de swarm draait:
docker-service ls
Hier ziet u de servicenaam, de modus en het aantal replica's in de huidige/gewenste indeling. Als er bijvoorbeeld 3/5 wordt weergegeven, betekent dit dat er nog taken worden aangemaakt om de gewenste status te bereiken.
Door de details en status van taken voor een specifieke service te controleren, kunt u achterhalen op welk knooppunt elke instantie draait:
docker service ps my-nginx
De uitvoer toont de taken, het toegewezen knooppunt , de status (Actief, Voorbereidend, Afgesloten, enz.), de gebruikte image en de uitvoeringstijd. Dit is essentieel voor het debuggen van implementatie- of loadbalancingproblemen.
Levenscyclusbeheer: schalen, upgraden en verwijderen van services
Een van de grote voordelen van orchestratie is de mogelijkheid om services te schalen en bij te werken zonder dat je elke server afzonderlijk hoeft te doen. Swarm maakt dit heel eenvoudig via de commandoregel.
Het schalen van een service in Docker Swarm betekent dat je aangeeft hoeveel replica's van die service je in totaal wilt hebben. Als je bijvoorbeeld my-nginx hebt aangemaakt met één replica en je wilt dit aantal verhogen naar drie:
docker service scale my-nginx=3
Swarm zorgt voor het inplannen van nieuwe taken op beschikbare knooppunten, waarbij rekening wordt gehouden met de resources en de status van de workers. Als je later nog meer capaciteit nodig hebt, kun je upgraden naar vijf replica's met:
docker service scale my-nginx=5
Het bijwerken van de image van een service is een ander belangrijk punt, vooral in een productieomgeving. In plaats van containers handmatig te stoppen en te verwijderen, kunt u een gecontroleerde update uitvoeren:
docker service update –image nginx:latest my-nginx
Met dit commando wordt Swarm opgedragen om bestaande taken geleidelijk naar de nieuwe image te migreren, volgens de gedefinieerde update-strategie (standaard een rolling update). Dit minimaliseert de impact op eindgebruikers.
Het verwijderen van een service wanneer deze niet langer nodig is, gebeurt ook op swarm-niveau, niet op het niveau van individuele containers:
docker service rm my-nginx
Dit stopt en verwijdert alle bijbehorende taken uit Swarm , waardoor resources op de nodes vrijkomen. Het is een nette manier om componenten uit te schakelen die niet langer relevant zijn voor uw architectuur.
Begeleide oefening: uw eigen cluster opzetten en een service implementeren
Om concepten te versterken, is er niets beter dan een kleine oefening die je kunt herhalen in een laboratoriumomgeving, met lokale virtuele machines of goedkope cloud-instanties.
Oefening 1: Configureer een Docker Swarm-cluster . Het idee is om minimaal drie knooppunten te hebben: één als manager en twee als workers. Schakel op de manager de swarm in met:
docker swarm init –advertise-addr
Kopieer vervolgens het join-commando dat in de uitvoer wordt weergegeven en voer het uit op elke worker:
docker swarm join –token :2377
Controleer of alles goed is gegaan met:
docker node ls
Je ziet de manager met de status 'Leider' en de medewerkers met de status 'Actief'. Als er medewerkers met de status 'Niet actief' worden weergegeven, controleer dan de connectiviteit, de firewall en de Docker-versie.
Oefening 2: Een service implementeren en schalen . Zodra het cluster gereed is, maak je een Nginx-service aan die toegankelijk is via HTTP:
docker service create –name my-nginx -p 80:80 nginx
Controleer het bestaan ervan met :
docker-service ls
Schaal de service op naar drie replica's met behulp van:
docker service scale my-nginx=3
Controleer waar de taken zijn geïmplementeerd met:
docker service ps my-nginx
Als basisoplossing voor de oefening zou je de drie taken verdeeld moeten zien over verschillende knooppunten (indien er voldoende resources zijn), en wanneer er HTTP-verzoeken naar poort 80 van het cluster worden gedaan, zal Swarm het verkeer naar de verschillende replica's routeren op basis van de interne load balancer.
Voordelen van Docker Swarm ten opzichte van handmatig containerbeheer
Het gebruik van Swarm in plaats van het starten van afzonderlijke containers biedt een aantal voordelen die duidelijk worden zodra je meer nodig hebt dan alleen een eenvoudige testomgeving.
Eenvoudige implementatie geïntegreerd in de Docker CLI : u hoeft geen volledig nieuwe tool te leren; de commando's voor service- en clusterbeheer lijken sterk op wat u al doet met docker run, docker ps of docker images.
Ingebouwde load balancing : Wanneer je een service beschikbaar maakt met `-p`, adverteert Swarm de poort op de benodigde knooppunten en verdeelt het verkeer over de beschikbare replica's. Je hoeft geen externe load balancer zoals Traefik toe te voegen om verzoeken te verdelen, wat de initiële architectuur vereenvoudigt.
Hoge beschikbaarheid en fouttolerantie : Als een container crasht of een worker-node uitvalt, detecteert Swarm het verlies van taken en probeert deze opnieuw aan te maken op andere nodes om het aantal replica's te behouden. Dit voorkomt veel serviceonderbrekingen als gevolg van geïsoleerde storingen.
Gecentraliseerd beheer van de gewenste status : u geeft aan hoeveel replica's u wilt, welke image u wilt gebruiken, welke poorten u wilt openen en welke beperkingen u wilt toepassen, en het cluster zorgt ervoor dat het naar die status convergeert. Toekomstige wijzigingen (updates, schaling, het leegmaken van knooppunten) worden ook vanuit dit controlepaneel beheerd.
Wanneer is het zinvol om Docker Swarm in je projecten te gebruiken?
Niet alle situaties vereisen Kubernetes of geavanceerde microservices . Docker Swarm is zeer geschikt voor diverse toepassingen waar een balans tussen eenvoud en orkestratiemogelijkheden gewenst is.
Kleine en middelgrote productieclusters : Als u een paar bedrijfsapplicaties, API's of interne services beheert en uw infrastructuur niet enorm is, biedt Swarm wat u nodig hebt zonder dat u een enorm ecosysteem hoeft te leren kennen.
Teams die intensief met Docker werken en de overstap naar orchestratie willen maken zonder vast te lopen in de leercurve van Kubernetes, kunnen baat hebben bij Swarm. Omdat Swarm onderdeel is van de Docker Engine zelf, verloopt de overgang doorgaans soepeler en sneller.
Cloudomgevingen en gedistribueerde architecturen waar u beheerde services van grote leveranciers wilt blijven gebruiken (databases, berichtenwachtrijen, opslag, enz.), terwijl uw applicaties in containers draaien die met Swarm worden georkestreerd. Het is een verstandige manier om eenvoud te combineren met de mogelijkheden van de cloud.
DevOps- en automatiseringsscenario's waarbij je pipelines nodig hebt die images bouwen, uploaden naar een registry en automatisch implementeren op een cluster. Swarm integreert goed met CI/CD-tools en maakt snelle continue leveringscycli mogelijk.
Wanneer je extreme controle, een enorm ecosysteem of complexe integraties nodig hebt, is Kubernetes wellicht een betere keuze. Maar voor veel praktijkprojecten biedt Swarm de benodigde orkestratie met minder operationele frictie.
Praktische handleidingen en de DevOps-aanpak: van de basisprincipes tot geavanceerde implementaties
Als je je verloren voelt tussen de verspreide tutorials, vreemde productiefouten en onsamenhangende documentatie over Docker Swarm, ben je niet de enige. Veel ontwikkel- en operationele teams raken overweldigd wanneer ze overstappen van individuele containers naar een georkestreerd platform.
Een uitgebreide DevOps-handleiding gericht op Swarm is doorgaans opgebouwd uit verschillende belangrijke onderdelen. Ten eerste worden de basisprincipes van Docker uitgelegd: het maken van images, het beheren en optimaliseren van containers , het gebruik van registry's en de beste praktijken voor het verpakken van containers. Deze solide basis is essentieel om te voorkomen dat orchestratie later een nachtmerrie wordt.
Vervolgens gaan we dieper in op netwerken en persistentie : Docker-netwerktypen (bridge, host, overlay, macvlan), volumebeheer en gegevenspersistentie, evenals het implementeren van multi-containerapplicaties met Docker Compose. Dit geeft je een duidelijk beeld van hoe je stack eruit moet zien voordat je deze implementeert in een gedistribueerde swarm.
Het volgende niveau richt zich op het implementeren van Swarm-services , van clusterinitialisatie tot geavanceerde functies zoals geheimen, configuraties en stacks. Hier werk je met declaratieve servicedefinities, versleutelde referenties en gedeelde configuraties tussen containers.
Een ander essentieel gebied is load balancing, logging en observability : leren hoe je services op de juiste manier beschikbaar stelt, logs analyseert, knelpunten identificeert en probleemoplossingstechnieken toepast om dagelijks een hoge beschikbaarheid te garanderen. Voor het monitoren en diagnosticeren van systemen is een geavanceerde monitoringhandleiding met informatie over metrics en alerts zeer nuttig.
Ten slotte is alles geïntegreerd in DevOps-pipelines met praktische programmeeroefeningen: van geautomatiseerde image-builds tot continue implementatie over het hele cluster, waardoor elke codewijziging betrouwbaar en herhaalbaar in productie terechtkomt.
Voorbij de basis: Docker-netwerken en de volgende stappen met Swarm
Zodra je het opstarten van het cluster en de eerste services onder de knie hebt , is de volgende stap meestal om grondig te begrijpen hoe je containers met elkaar en met de buitenwereld communiceren.
Docker bridge- en hostnetwerken regelen een groot deel van de communicatie op één machine, terwijl overlay-netwerken essentieel zijn voor het verbinden van containers op verschillende knooppunten in een swarm. Inzicht in de verschillen, wanneer je welke moet gebruiken en hoe ze samenwerken met externe firewalls en load balancers is cruciaal om verrassingen in een productieomgeving te voorkomen.
Netwerken zoals macvlan stellen je in staat om "echte" IP-adressen van het fysieke netwerk toe te wijzen aan containers. Dit kan erg handig zijn in specifieke omgevingen waar je wilt dat services zich op netwerkniveau gedragen als onafhankelijke hosts, maar het voegt ook complexiteit en extra configuratievereisten toe.
Een diepgaande analyse van Docker-netwerken helpt u om het ontwerp van uw Swarm-service beter af te stemmen op de netwerktopologie van uw organisatie of cloudprovider. Hierbij wordt duidelijk gedefinieerd welke services intern zijn, welke extern toegankelijk zijn en hoe het verkeer tussen omgevingen (ontwikkeling, testen, productie) kan worden gesegmenteerd.
Een ander interessant ontwikkelingsgebied binnen Swarm is het intensievere gebruik van geheimen en configuraties om referenties, certificaten en configuratiebestanden te beheren zonder deze direct in de image op te nemen of gewone omgevingsvariabelen te gebruiken. Dit verhoogt de beveiliging en maakt het beheer van de omgeving veel overzichtelijker.
Maatwerkontwikkeling, cloudoplossingen en business intelligence-diensten gebouwd rondom Docker Swarm.
Containerorkestratie staat niet los van de rest van het IT-ecosysteem . Ontwikkelbedrijven die gespecialiseerd zijn in maatwerkapplicaties en -software, maken vaak gebruik van containerplatformen zoals Swarm om robuustere en schaalbare oplossingen te leveren.
Door Swarm te integreren met de cloudservices van AWS en Azure kunnen flexibele clusters worden ingezet.
en gebruikmaken van beheerde cloudcomponenten (databases, berichtenwachtrijen, objectopslag), terwijl de directe controle over de uitvoeringslaag van de container behouden blijft.
Tegelijkertijd passen kunstmatige intelligentie en AI voor bedrijven heel goed in een georkestreerde omgeving met containers: AI-modellen, inferentie-microservices en AI-agenten kunnen draaien als Swarm-services die schalen op basis van de belasting, waardoor wordt voorkomen dat één machine een knelpunt wordt.
In de wereld van business intelligence en Power BI maakt een backend die is geïmplementeerd op Docker Swarm het eenvoudiger om op robuuste wijze gegevens te extraheren uit API's, ETL-services en verwerkingspipelines. Orchestratie zorgt ervoor dat deze services altijd beschikbaar zijn om dashboards en analyses te voeden.
Cyberbeveiliging wint in deze context ook aan belang : een goed geconfigureerd cluster, met TLS-communicatie, gecontroleerde image-updates, kwetsbaarheidsscans en gecentraliseerd beheer van geheimen, vermindert de risico's in vergelijking met chaotische implementaties van onafhankelijke containers. Bovendien verbeteren beveiligingsmaatregelen en toegangscontrole de algehele bescherming van de omgeving.
Uiteindelijk maakt de combinatie van maatwerkontwikkeling, cloudservices, AI en BI op een orchestratieplatform zoals Docker Swarm het mogelijk om moderne, schaalbare en robuuste oplossingen te bouwen zonder de technische complexiteit of de operationele kosten te verhogen.
Door Docker Swarm als containerorkestratietool te beheersen, verkrijgt u een zeer sterke positie binnen de DevOps-wereld: u stapt af van het worstelen met verspreide containers en kwetsbare implementaties en werkt met een samenhangend, schaalbaar en veilig cluster dat alles kan ondersteunen, van eenvoudige webapplicaties tot gedistribueerde architecturen met cloudservices, kunstmatige intelligentie, automatisering en geïntegreerde business intelligence-oplossingen.
Index
- 1 Wat is Docker Swarm en waarom is het belangrijk voor containerorkestratie?
- 2 Kernbegrippen in Docker Swarm: knooppunten, services en netwerken
- 3 Eerste stappen: het initialiseren en testen van een Docker Swarm-cluster
- 4 Services implementeren in Docker Swarm: van de eerste nginx tot productie
- 5 Levenscyclusbeheer: schalen, upgraden en verwijderen van services
- 6 Begeleide oefening: uw eigen cluster opzetten en een service implementeren
- 7 Voordelen van Docker Swarm ten opzichte van handmatig containerbeheer
- 8 Wanneer is het zinvol om Docker Swarm in je projecten te gebruiken?
- 9 Praktische handleidingen en de DevOps-aanpak: van de basisprincipes tot geavanceerde implementaties
- 10 Voorbij de basis: Docker-netwerken en de volgende stappen met Swarm
- 11 Maatwerkontwikkeling, cloudoplossingen en business intelligence-diensten gebouwd rondom Docker Swarm.
