Docker Swarm: containerorkestrering til virkelige miljøer

Sidste ændring: 28 marts 2026
Forfatter: TecnoDigital
  • Docker Swarm giver dig mulighed for at oprette klynger af noder for at orkestrere containeriserede tjenester med høj tilgængelighed og integreret load balancing.
  • Begreberne node-, manager-, worker-, service-, task- og overlay-netværk er grundlaget for at forstå, hvordan Swarm administrerer og distribuerer containere.
  • Kommandoer som docker swarm init, docker service create eller docker service scale gør det nemt at implementere, skalere og opdatere applikationer.
  • Swarm passer rigtig godt ind i små og mellemstore projekter og integrerer med cloud-tjenester, DevOps-praksisser, AI og business intelligence.

Docker Swarm containerorkestrering

Det kan blive en reel hovedpine at administrere snesevis eller hundredvis af containere spredt på tværs af flere maskiner, hvis du kun stoler på det grundlæggende Docker. Når man begynder at tale om høj tilgængelighed, automatisk skalering eller nedetidfri implementeringer, har man brug for mere end blot individuelle containere: man har brug for containerorkestrering . Og det er her, Docker Swarm kommer ind i billedet, Dockers native løsning til koordinering af containere på tværs af en klynge.

Hvis du er kommet fra at bruge Docker Compose på en enkelt maskine og finder det utilstrækkeligt til virkelige miljøer, er Swarm det næste logiske skridt. Det giver dig mulighed for at oprette en klynge af noder, distribuere tjenester på tværs af dem, load-balancere, udskifte nedbrudte containere og i sidste ende transformere en lang række servere til en enkelt, sammenhængende, produktionsklar platform uden at skulle hoppe direkte til Kubernetes , hvis du finder det for besværligt eller komplekst.

Hvad er Docker Swarm, og hvorfor er det vigtigt i containerorkestrering?

Docker Swarm er den klynge- og orkestreringsmotor, der er indbygget direkte i Docker. Det er ikke et eksternt værktøj, men snarere en driftstilstand i selve Docker Engine, der giver dig mulighed for at gruppere flere maskiner (fysiske eller virtuelle) i en logisk klynge, kaldet en swarm, hvor du implementerer tjenester i stedet for isolerede containere.

Det smukke ved Swarm er, at det abstraherer hele sættet af noder og lader dig arbejde, som om du havde en enkelt "superserver". Du definerer tjenester, deres antal replikaer, eksponerede porte og begrænsninger, og Swarm bestemmer, hvor hver container (opgave) skal køres, hvordan de skal omfordeles, hvis en node fejler, og hvordan trafikken skal balanceres mellem dem.

Med hensyn til containerorkestrering dækker Docker Swarm de typiske behov hos mange DevOps-teams: nem horisontal skalering, grundlæggende høj tilgængelighed, intern load balancing, lagdelte netværk mellem noder og kontrollerede implementeringer, hvilket gør det velegnet til microservices-arkitekturer . Det er især interessant for små og mellemstore projekter eller for organisationer, der er meget bekendt med Docker-økosystemet, og som ikke kræver Kubernetes' fulde kompleksitet.

Swarm er velegnet til scenarier, hvor enkelhed er nøglen : laboratorier, staging-miljøer, lokale klynger i en SMV eller endda cloud-produktion, når du ikke ønsker at administrere en kompleks platform. Derudover integreres det problemfrit med CI/CD-pipelines og DevOps-praksisser, der allerede bruger Docker til applikationspakning.

Docker Swarm-klynge til containere

Nøglebegreber i Docker Swarm: noder, tjenester og netværk

Før du begynder at skrive kommandoer som en gal , er det vigtigt at forstå, hvordan Swarm refererer til hver brik i puslespillet. Det er disse koncepter, du vil se konstant i CLI'en og dokumentationen.

En node er enhver maskine, der er en del af sværmen; det kan være en fysisk server, en VM i skyen eller endda din bærbare computer i et testmiljø. Hver node kører Docker Engine og registrerer sig i klyngen under en specifik rolle.

Manager-node : Dette er hjernen i klyngen. Den er ansvarlig for at opretholde den ønskede tilstand, planlægge opgaver og orkestrere operationer. Der kan være flere managere for at sikre høj tilgængelighed af kontrolplanet, men en af ​​dem fungerer som leder og koordinerer resten.

Arbejdsnoder : Disse er sværmens "arbejdere". De træffer ikke orkestreringsbeslutninger; de udfører blot de opgaver (containere), som manageren har tildelt dem. Dette gør det muligt at skalere computerkapaciteten ved at tilføje flere arbejdere efter behov.

En tjeneste er den enhed, der anvendes til implementering i Swarm. Den definerer det containerbillede, der skal bruges, antallet af replikaer, porte, miljøvariabler, konfigurationer, hemmeligheder og andre muligheder. I modsætning til at køre en enkelt container med `docker run` beskriver `docker service create` en tjeneste, som Swarm vedligeholder i den ønskede tilstand.

En opgave er en konkret instans af en container, der er tilknyttet en tjeneste og tildelt en node. Hvis du anmoder om en tjeneste med 3 replikaer, opretter Swarm 3 opgaver. Hvis en opgave mislykkes, opretter manageren en ny for at opretholde antallet af replikaer.

Overlay-netværk : Dette er en type distribueret virtuelt netværk, der tillader containere placeret på forskellige noder at kommunikere, som om de var på det samme lokale netværk. Swarm bruger disse overlay-netværk til at forbinde tjenester, anvende load balancing mellem replikaer og isolere applikationer fra hinanden.

Første trin: initialisering og test af en Docker Swarm-klynge

Det er overraskende ligetil at opsætte en simpel sværm, hvis du allerede har Docker installeret på dine maskiner. Du behøver ikke ekstra software: du skal blot aktivere sværmtilstand og forbinde noder til klyngen.

  Komplet guide til Docker-containersikkerhed

Trin 1: Opret den første manager . Kør følgende på den maskine, du vil bruge som den første managernode:

docker swarm init –annoncer-addr

Parameteren `--advertise-addr` angiver den IP-adresse , som andre noder vil bruge til at se denne manager. Efter at have kørt kommandoen, viser Docker automatisk et token og en kommando, der er klar til, at andre noder kan slutte sig til sværmen som arbejdere.

Trin 2: Forbind arbejdsnoder med klyngen . Kør noget lignende på hver maskine, der skal fungere som en arbejdsnode:

docker swarm join –token :2377

Join-tokenet og managerens IP-adresse sendes fra kommandoen `docker swarm init`. Port 2377 bruges som standard til kontrolkommunikation. Fra det tidspunkt vil noden vises som en del af sværmen og være klar til at modtage opgaver.

Det er lige så simpelt at kontrollere klyngestatus som at gå til en manager (det virker ikke på en isoleret arbejder) og køre:

docker-node ls

Denne kommando viser dig alle noder i swarmen , deres ID, værtsnavn, rolle (manager eller arbejder) og aktuelle status. Herfra kan du registrere, om en node er nede, i drain-tilstand eller oplever forbindelsesproblemer.

Implementering af tjenester i Docker Swarm: fra den første nginx til produktion

Når du har klyngen oppe at køre , begynder den interessante del: udrulning af tjenester. I stedet for at starte individuelle containere med `docker run`, definerer du tjenester, som Swarm vedligeholder og automatisk rebalancerer.

Oprettelse af en simpel tjeneste som en Nginx-webserver, der er tilgængelig fra uden for klyngen, gøres med en kommando som denne:

docker-tjeneste opret –navngiv my-nginx -p 80:80 nginx

Dette starter en tjeneste kaldet my-nginx , der eksponerer port 80 på containeren til port 80 på klyngenoderne. Swarm håndterer publicering af tjenesten og load balancing af indgående anmodninger på tværs af de forskellige replikaer, efterhånden som du skalerer dem.

En liste over implementerede tjenester hjælper dig med at holde styr på, hvad der kører i sværmen:

havnearbejder service ls

Her ser du tjenestens navn, dens tilstand og antallet af replikaer i det aktuelle/ønskede format. Hvis du for eksempel viser 3/5, betyder det, at den stadig er i gang med at oprette opgaver for at nå den ønskede tilstand.

Ved at kontrollere detaljerne og status for opgaver for en bestemt tjeneste kan du identificere, hvilken node hver instans kører på:

docker-tjeneste ps my-nginx

Outputtet viser opgaverne, den tildelte node , status (Kører, Forbereder, Nedlukning osv.), det anvendte billede og køretiden. Dette er vigtigt for at kunne fejlfinde problemer med implementering eller load balancing.

Livscyklusstyring: skalering, opgradering og sletning af tjenester

En af de store fordele ved orkestrering er muligheden for at skalere og opdatere tjenester uden at skulle gå server for server. Swarm gør dette ret nemt fra kommandolinjen.

Skalering af en tjeneste i Docker Swarm betyder at angive, hvor mange replikaer af en tjeneste du ønsker i alt. Hvis du for eksempel oprettede my-nginx med en enkelt replika og vil øge den til tre:

docker-tjenesteskala my-nginx=3

Swarm håndterer planlægning af nye opgaver på tilgængelige noder, idet der tages hensyn til arbejdsressourcer og -tilstand. Hvis du har brug for endnu mere kapacitet senere, kan du opgradere til fem replikaer med:

docker-tjenesteskala my-nginx=5

Opdatering af en tjenestes image er et andet vigtigt punkt, især i produktion. I stedet for manuelt at stoppe og slette containere, kan du udføre en kontrolleret opdatering:

docker-tjenesteopdatering – image nginx: nyeste my-nginx

Denne kommando instruerer Swarm i gradvist at migrere eksisterende opgaver til det nye image i henhold til den definerede opdateringsstrategi (som standard rullende opdatering). Dette minimerer påvirkningen på slutbrugerne.

Fjernelse af en tjeneste, når du ikke længere har brug for den, gøres også på sværmniveau, ikke på det individuelle containerniveau:

docker service rm my-nginx

Dette stopper og fjerner alle tilknyttede opgaver fra Swarm , hvilket frigør ressourcer på noderne. Det er en ren måde at afvikle komponenter, der ikke længere giver mening i din arkitektur.

Vejledt øvelse: opsætning af din egen klynge og implementering af en tjeneste

For at forstærke koncepter er der intet, der slår en lille øvelse , som du kan gentage i et laboratoriemiljø med lokale virtuelle maskiner eller billige cloud-instanser.

Øvelse 1: Konfigurer en Docker Swarm-klynge . Ideen er at have mindst tre noder: én som manager og to som workers. Aktiver sværmen på manageren med:

docker swarm init –annoncer-addr

Kopier derefter den join-kommando, der vises i outputtet, og kør den på hver worker:

docker swarm join –token :2377

Tjek at alt gik godt med:

  Komplet guide til NVMe Active-Active-lagring og virksomhedsløsninger

docker-node ls

Du vil se lederen i Leder-status og arbejderne som Aktive. Hvis nogen vises som Nede, skal du kontrollere forbindelse, firewall og Docker-version.

Øvelse 2: Implementer og skaler en tjeneste . Når klyngen er klar, skal du oprette en nginx-tjeneste, der er tilgængelig via HTTP:

docker-tjeneste opret –navngiv my-nginx -p 80:80 nginx

Tjek dens eksistens med :

havnearbejder service ls

Skalér tjenesten til tre replikaer ved hjælp af:

docker-tjenesteskala my-nginx=3

Tjek hvor opgaverne er blevet implementeret med:

docker-tjeneste ps my-nginx

Som en grundlæggende løsning på øvelsen bør du se de tre opgaver fordelt på forskellige noder (hvis der er tilstrækkelige ressourcer), og når Swarm foretager HTTP-anmodninger til port 80 i klyngen, vil den dirigere trafikken til de forskellige replikaer i henhold til sin interne load balancer.

Fordele ved Docker Swarm i forhold til manuel containerhåndtering

At bruge Swarm i stedet for at lancere individuelle containere tilbyder en række fordele, der bliver tydelige fra det øjeblik, du har brug for mere end blot et simpelt testmiljø.

Enkel implementering integreret i Docker CLI : Du behøver ikke at lære et helt nyt værktøj; service- og klyngestyringskommandoerne minder meget om, hvad du allerede gør med docker run, docker ps eller docker images.

Indbygget load balancing : Når du eksponerer en tjeneste med `-p`, annoncerer Swarm porten på de nødvendige noder og fordeler trafikken blandt de tilgængelige replikaer. Du behøver ikke at tilføje en grundlæggende ekstern load balancer som Traefik for at distribuere anmodninger, hvilket forenkler den indledende arkitektur.

Høj tilgængelighed og fejltolerance : Hvis en container går ned, eller en worker node fejler, registrerer Swarm tabet af opgaver og forsøger at genskabe dem på andre noder for at opretholde antallet af replikaer. Dette forhindrer mange serviceafbrydelser på grund af isolerede fejl.

Centraliseret styring af den ønskede tilstand : Du angiver, hvor mange replikaer du ønsker, hvilket image der skal bruges, hvilke porte der skal åbnes, og hvilke begrænsninger der skal anvendes, og klyngen sørger for at konvergere til den tilstand. Fremtidige ændringer (opdateringer, skalering, node draining) styres også fra dette kontrolplan.

Hvornår giver det mening at bruge Docker Swarm i dine projekter

Ikke alle situationer kræver Kubernetes eller forbedrede mikrotjenester . Docker Swarm passer rigtig godt til en række anvendelsesscenarier, hvor der ønskes en balance mellem enkelhed og orkestreringsmuligheder.

Små og mellemstore produktionsklynger : Hvis du administrerer et par forretningsapplikationer, API'er eller interne tjenester, og din infrastruktur ikke er massiv, tilbyder Swarm det, du har brug for, uden at tvinge dig til at lære et enormt økosystem at kende.

Teams, der er stærkt integreret med Docker, og som ønsker at tage springet til orkestrering uden at blive hæmmet af Kubernetes læringskurve. Da Swarm er en del af selve Docker Engine, er overgangen normalt mere gnidningsløs og hurtigere.

Cloud-miljøer og distribuerede arkitekturer , hvor du ønsker at fortsætte med at bruge administrerede tjenester fra større udbydere (databaser, meddelelseskøer, lagring osv.), mens dine applikationer kører i containere, der er orkestreret med Swarm. Det er en fornuftig måde at kombinere enkelhed med cloud-funktioner.

DevOps og automatiseringsbrugsscenarier, hvor du har brug for pipelines, der bygger images, uploader dem til et register og automatisk implementerer dem i en klynge. Swarm integrerer godt med CI/CD-værktøjer og muliggør hurtige, kontinuerlige leveringscyklusser.

Når du har brug for ekstrem kontrol, et massivt økosystem eller komplekse integrationer, kan Kubernetes give mere mening. Men til mange projekter i den virkelige verden leverer Swarm den nødvendige orkestrering med mindre operationel friktion.

Praktiske vejledninger og DevOps-tilgang: fra det grundlæggende til avancerede implementeringer

Hvis du har følt dig fortabt midt i spredte tutorials, mærkelige produktionsfejl og usammenhængende dokumentation om Docker Swarm, er du ikke alene. Mange udviklings- og driftsteams oplever overvældelse, når de skifter fra individuelle containere til en orkestreret platform.

En omfattende DevOps-guide med fokus på Swarm er typisk organiseret i flere nøgleblokke. Først etablerer den det grundlæggende i Docker: oprettelse af images, containerhåndtering og -optimering , brug af registreringsdatabaser og bedste praksis for pakning. Dette solide fundament er afgørende for at forhindre, at orkestrering bliver et mareridt senere hen.

Dernæst dykker vi dybere ned i netværk og persistens : Docker-netværkstyper (bridge, host, overlay, macvlan), volumenstyring og datapersistens, samt implementering af multi-container-applikationer med Docker Compose. Dette giver dig en klar model af, hvordan din stak skal se ud, før du implementerer den i en distribueret sværm.

Det næste niveau fokuserer på implementering af Swarm-tjenester , der dækker alt fra klyngeinitialisering til avancerede funktioner som hemmeligheder, konfigurationer og stakke. Her arbejder du med deklarative tjenestedefinitioner, krypterede legitimationsoplysninger og delte konfigurationer på tværs af containere.

Et andet vigtigt område er load balancing, logging og observerbarhed : at lære, hvordan man korrekt eksponerer tjenester, gennemgår logs, identificerer flaskehalse og anvender fejlfindingsteknikker for at opretholde høj tilgængelighed dagligt. Til overvågning og diagnosticering af systemer vil en avanceret overvågningsvejledning, der dækker metrikker og advarsler, være meget nyttig.

  Sådan gør du en langsom computer hurtigere i Windows trin for trin

Endelig integreres alt i DevOps-pipelines med praktiske programmeringsøvelser: fra automatiserede image-builds til kontinuerlig implementering på tværs af klyngen, hvilket sikrer, at hver kodeændring pålideligt og gentageligt når produktionen.

Ud over det grundlæggende: Docker-netværk og de næste trin med Swarm

Når du har mestret opstarten af ​​klyngen og de første tjenester , er næste niveau normalt at forstå grundigt, hvordan dine containere kommunikerer med hinanden og med omverdenen.

Dockerbridge og hostnetværk styrer en stor del af kommunikationen på en enkelt maskine, mens overlay-netværk er nøglen til at forbinde containere på tværs af forskellige noder i en sværm. Det er vigtigt at forstå deres forskelle, hvornår man skal bruge hver enkelt, og hvordan de interagerer med eksterne firewalls og load balancers for at undgå overraskelser i produktionen.

Netværk som macvlan giver dig mulighed for at tildele "rigtige" IP-adresser fra det fysiske netværk til containere, hvilket kan være meget nyttigt i specifikke miljøer, hvor du har brug for, at tjenester opfører sig som uafhængige værter på netværksniveau, men det tilføjer også kompleksitet og yderligere konfigurationskrav.

Et "dybtgående dyk" ned i Docker-netværk vil hjælpe dig med bedre at afstemme dit Swarm-servicedesign med netværkstopologien i din organisation eller cloududbyder, og dermed tydeligt definere, hvilke tjenester der er interne, hvilke der er eksponeret for omverdenen, og hvordan man segmenterer trafikken mellem miljøer (udvikling, test, produktion).

Et andet interessant udviklingsområde i Swarm er dens dybere brug af hemmeligheder og konfigurationer til at administrere legitimationsoplysninger, certifikater og konfigurationsfiler uden direkte at integrere dem i imaget eller bruge almindelige miljøvariabler. Dette øger sikkerheden og gør miljøstyringen meget mere organiseret.

Brugerdefineret udvikling, cloud- og business intelligence-tjenester bygget op omkring Docker Swarm

Containerorkestrering er ikke isoleret fra resten af ​​IT-økosystemet . Udviklingsvirksomheder, der specialiserer sig i brugerdefinerede applikationer og brugerdefineret software, bruger ofte containerplatforme som Swarm til at levere mere robuste og skalerbare løsninger.

Integration af Swarm med AWS og Azure cloud-tjenester muliggør implementering af fleksible klynger

og udnytte administrerede cloud-komponenter (databaser, meddelelseskøer, objektlagring), samtidig med at der opretholdes direkte kontrol over containerudførelseslaget.

Parallelt hermed passer kunstig intelligens og AI til virksomheder rigtig godt ind i et orkestreret miljø med containere: AI-modeller, inferensmikrotjenester og AI-agenter kan køre som Swarm-tjenester, der skalerer i henhold til belastningen, hvilket forhindrer en enkelt maskine i at blive en flaskehals.

Inden for business intelligence og Power BI gør det nemmere at udtrække data fra API'er, ETL-tjenester og behandlingspipelines fra en backend implementeret på Docker Swarm. Orkestrering sikrer, at disse tjenester altid er tilgængelige til at forsyne dashboards og analyser.

Cybersikkerhed vinder også frem i betydning i denne sammenhæng : en velkonfigureret klynge med TLS-kommunikation, kontrollerede billedopdateringer, sårbarhedsscanning og centraliseret håndtering af hemmeligheder reducerer risici sammenlignet med kaotiske implementeringer af uafhængige containere. Derudover forbedrer hærdningspraksis og adgangskontrol den samlede beskyttelse af miljøet.

I sidste ende giver kombinationen af ​​brugerdefineret udvikling, cloud-tjenester, AI og BI på en orkestreringsplatform som Docker Swarm dig mulighed for at bygge moderne, skalerbare og robuste løsninger uden at øge den tekniske kompleksitet eller driftsomkostningerne.

At mestre Docker Swarm som et containerorkestreringsværktøj sætter dig i en meget stærk position inden for DevOps-verdenen: Du går fra at kæmpe med spredte containere og skrøbelige implementeringer til at arbejde med en sammenhængende, skalerbar og sikker klynge, der er i stand til at understøtte alt fra simple webapplikationer til distribuerede arkitekturer med cloudtjenester, kunstig intelligens, automatisering og integrerede business intelligence-løsninger.

Docker Swarm-kant
Relateret artikel:
Docker Swarm og Portainer Edge til edge-implementeringer