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

Håndtering af snesevis eller hundredvis af containere Det kan blive en reel hovedpine at sprede containere 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 implementeringer uden nedetid, har man brug for mere end blot individuelle containere: man har brug for containerorkestreringOg det er her, Docker Swarm kommer ind i billedet, Dockers native løsning til koordinering af containere i en klynge.

Hvis du bruger Docker Compose på en enkelt maskine fra før Og hvis du opdager, at det ikke er nok 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 masse servere til en enkelt, sammenhængende, produktionsklar platform uden at skulle hoppe direkte til Kubernetes hvis du synes, det er for tungt eller komplekst.

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

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

Det smukke ved Swarm er, at det abstraherer sættet af noder Og det 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 (opgaver) skal køres, hvordan de skal omfordeles, hvis en node fejler, og hvordan trafikken mellem dem skal balanceres.

Med hensyn til containerorkestreringDocker Swarm dækker de typiske behov hos mange DevOps-teams: nem horisontal skalering, grundlæggende høj tilgængelighed, intern load balancing, netværksoverlejringer mellem noder og kontrollerede implementeringer, hvilket gør det velegnet til mikroservicearkitekturerDet er især interessant i små og mellemstore projekter, eller i organisationer, der er meget vant til Docker-økosystemet, og som ikke har brug for al kompleksiteten i Kubernetes.

Swarm er et godt valg til scenarier, hvor enkelhed er ønsket.Labs, staging-miljøer, lokale klynger i en SMV eller endda cloud-produktion, når du ikke ønsker at administrere en massiv platform. Derudover passer det perfekt til CI/CD-pipelines og DevOps-praksisser, der allerede bruger Docker til at pakke applikationer.

Docker Swarm-klynge til containere

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

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

NodoEn 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 ved hjælp af en specifik rolle.

Manager-nodeDette er hjernen i klyngen. Den håndterer den ønskede tilstandskontrol, opgaveplanlægning og orkestrering. Der kan være flere ledere for at sikre høj tilgængelighed af kontrolplanet, men en af ​​dem fungerer som leder og koordinerer resten.

ArbejdsnodeDisse 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.

service`docker service` er implementeringsenheden 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 service, som Swarm vedligeholder i den ønskede tilstand.

opgaveDette er den specifikke 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 én opgave mislykkes, opretter manageren en anden for at opretholde antallet af replikaer.

Overlay-netværkEt virtuelt overlay-netværk (VTN) 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 er afhængig af 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 oprette en grundlæggende sværm Hvis du allerede har Docker installeret på dine maskiner, behøver du ikke ekstra software: du skal blot aktivere sværmtilstand og forbinde noder med klyngen.

  Varnish Cache: Hvad det er, hvordan det fungerer, og hvorfor det optimerer dit websted

Trin 1: Opret den første managerPå den maskine, du vil bruge som den indledende manager-node, skal du køre:

docker swarm init –annoncer-addr

Parameteren –advertise-addr angiver IP-adressen Sådan vil de andre noder se denne manager. Efter at have kørt kommandoen, vil Docker automatisk vise 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 klyngenPå hver maskine, der skal fungere som en arbejder, skal du udføre noget lignende:

docker swarm join –token :2377

Tilmeldingstokenet og administratorens IP-adresse De kommer fra outputtet fra docker swarm init. Port 2377 bruges som standard til kontrolkommunikation. Fra det øjeblik vil noden fremstå som en del af sværmen og være klar til at modtage opgaver.

Kontrol af klyngestatus Det er så simpelt som at gå til en leder (det virker ikke med en isoleret medarbejder) og starte:

docker-node ls

Denne kommando viser dig alle noderne i sværmen, dens ID, værtsnavn, rolle (manager eller arbejder) og aktuelle status. Herfra kan du registrere, om en node er nede, i drain-tilstand eller har forbindelsesproblemer.

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

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

Opret en simpel tjeneste At gøre en Nginx-webserver tilgængelig fra uden for klyngen gøres med en kommando som denne:

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

Dette vil starte en tjeneste kaldet my-nginx hvilket eksponerer port 80 på containeren til port 80 på klyngenoderne. Swarm håndterer publicering af tjenesten og afbalancering af indgående anmodninger på tværs af de forskellige replikaer, mens du skalerer dem.

Liste over de implementerede tjenester Det 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 nuværende/ønsket format. Hvis du for eksempel angiver 3/5, betyder det, at den stadig er i gang med at oprette opgaver for at nå den ønskede tilstand.

Tjek detaljerne og status for opgaverne en specifik tjeneste giver dig mulighed for at identificere, hvilken node hver instans kører på:

docker-tjeneste ps my-nginx

Outputtet viser opgaverne og den tildelte node.Tilstanden (Kører, Forbereder, Nedlukning osv.), det anvendte billede og køretiden er alle vigtige for fejlfinding af implementerings- eller belastningsfordelingsproblemer.

Livscyklusstyring: skalering, opgradering og sletning af tjenester

En af de store fordele ved orkestrering Det 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 Det 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 ønsker at øge den til tre:

docker-tjenesteskala my-nginx=3

Swarm er ansvarlig for planlægning af nye opgaver på tilgængelige noder, med respekt for arbejdsressourcer og tilstand. Hvis du har brug for endnu mere kapacitet senere, kan du øge til fem replikaer med:

docker-tjenesteskala my-nginx=5

Opdatering af billedet af en tjeneste Dette 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 til gradvist at ændre opgaverne Eksisterende brugere vil blive opdateret til det nye image i henhold til den definerede opdateringsstrategi (som standard løbende opdatering). Dette minimerer påvirkningen på slutbrugerne.

Fjern en tjeneste, når du ikke længere har brug for den Dette 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. og 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 replikere i et laboratoriemiljø med lokale virtuelle maskiner eller billige cloud-instanser.

Øvelse 1: Opsætning af en Docker Swarm-klyngeIdeen er at have mindst tre noder: én som manager og to som arbejdere. På manageren aktiveres sværmen med:

docker swarm init –annoncer-addr

Kopier derefter join-kommandoen som viser dig outputtet og kører det på hver arbejder:

docker swarm join –token :2377

Tjek at alt gik godt med:

docker-node ls

  Sådan undgår du fejl, når du installerer en SSD i en ny pc

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: Implementering og skalering af en tjenesteNå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

Tjenesten skaleres til tre replikaer ved brug af:

docker-tjenesteskala my-nginx=3

Tjek hvor opgaverne er blevet placeret med:

docker-tjeneste ps my-nginx

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

Fordele ved Docker Swarm i forhold til manuel containerhåndtering

Brug Swarm i stedet for at starte individuelle containere Det giver en række fordele, der bliver tydelige fra det øjeblik, du har brug for mere end blot et simpelt testmiljø.

Enkel og integreret implementering i Docker CLIDu behøver ikke at lære et helt nyt værktøj; kommandoerne til service og klyngestyring minder meget om det, du allerede gør med docker run, docker ps eller docker images.

Indbygget belastningsbalanceringNå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 f.eks. Traefik at distribuere anmodninger, hvilket forenkler den indledende arkitektur.

Høj tilgængelighed og fejltoleranceHvis 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 tilstandDu deklarerer, 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) administreres også fra dette kontrolplan.

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

Ikke alle situationer kræver Kubernetes eller forbedrede mikrotjenesterDocker Swarm passer rigtig godt ind i en række use cases, hvor der søges en balance mellem enkelhed og orkestreringsmuligheder.

Små og mellemstore produktionsklyngerHvis 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.

Stærkt integrerede Docker-systemer som ønsker at tage springet til orkestrering uden at blive hængende fast i 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 på tværs af 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 Kubernetes giver måske mere mening. Men for mange projekter i den virkelige verden sørger Swarm for 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 blandt spredte tutorials og mærkelige fejl Du er ikke alene om det usammenhængende dokumentations- og produktionsmiljø omkring Docker Swarm. Mange udviklings- og driftsteams oplever overvældelse, når de skal skifte fra individuelle containere til en orkestreret platform.

En komplet, praktisk guide til DevOps med fokus på Swarm Det er normalt organiseret i flere nøgleblokke. Først etableres det grundlæggende i Docker: oprettelse af billeder, containerhåndtering og containeroptimeringBrugen af ​​registre og god emballagepraksis er afgørende. Dette solide fundament er uundværligt for at forhindre, at orkestrering bliver et mareridt.

Derefter dykker den dybere ned i netværk og vedholdenhedDocker-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å implementeringen af ​​Swarm-tjenester.dækker alt fra klyngeinitialisering til avancerede funktioner som hemmeligheder, konfigurationer og stakke. Der vil du arbejde med deklarative servicedefinitioner, krypterede legitimationsoplysninger og delte konfigurationer mellem containere.

En anden vigtig blok er balancering, registrering og observerbarhed.Lær at eksponere tjenester korrekt, gennemgå logs, registrere flaskehalse og anvende fejlfindingsteknikker for at opretholde høj tilgængelighed dagligt. Til overvågning og diagnosticering af systemer vil du finde et nyttigt værktøj. avanceret overvågningsvejledning der dækker metrikker og advarsler.

  Linux i Live-tilstand og Live USB: fordele, anvendelser og begrænsninger

Endelig er alt integreret 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 gør rejsen til produktion pålidelig og gentagelig.

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

Når du mestrer klyngeopstart og indledende tjenesterDet næste niveau er normalt at forstå fuldt ud, hvordan dine containere kommunikerer med hinanden og med omverdenen.

Docker Bridge og værtsnetværk De 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 tillader tildeling af "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 Det vil hjælpe dig med bedre at afstemme dit Swarm-servicedesign med din organisations eller cloududbyders netværkstopologi, tydeligt definere hvilke tjenester der er interne, hvilke der eksponeres eksternt, og hvordan man segmenterer trafik mellem miljøer (udvikling, test, produktion).

Endnu en interessant historie i Swarm Det involverer en dyberegående analyse af brugen af ​​hemmeligheder og konfigurationer til at administrere legitimationsoplysninger, certifikater og konfigurationsfiler uden at integrere dem direkte 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 eksisterer ikke isoleret fra resten af ​​IT-økosystemetUdviklingsvirksomheder, der specialiserer sig i brugerdefinerede applikationer og brugerdefineret software, bruger ofte containerplatforme som Swarm til at levere mere robuste og skalerbare løsninger.

Integrer Swarm med AWS og Azure cloud-tjenester Det 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 med kunstig intelligens og AI til virksomheder De passer rigtig godt ind i et orkestreret miljø med containere: AI-modeller, inferensmikrotjenester og AI-agenter kan køre som Swarm-tjenester, der skalerer efter belastning, hvilket forhindrer en enkelt maskine i at blive en flaskehals.

Inden for business intelligence og Power BIAt have en backend implementeret på Docker Swarm gør det nemmere at udtrække data robust fra API'er, ETL-tjenester og behandlingspipelines. Orkestrering sikrer, at disse tjenester altid er tilgængelige for 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 hemmelig administration reducerer risici sammenlignet med kaotiske implementeringer af uafhængige containere. Derudover er bedste praksis for hærdning og adgangskontrol forbedrer den samlede beskyttelse af miljøet.

I sidste ende handler det om at kombinere brugerdefineret udvikling, cloud-tjenester, AI og BI Ved at bruge en orkestreringsplatform som Docker Swarm kan du bygge moderne, skalerbare og robuste løsninger uden at øge den tekniske kompleksitet eller driftsomkostningerne.

Mastering af Docker Swarm som et containerorkestreringsværktøj Det 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