Docker Swarm: orchestrácia kontajnerov pre reálne prostredia

Posledná aktualizácia: 28 marca 2026
  • Docker Swarm vám umožňuje vytvárať klastre uzlov na organizovanie kontajnerových služieb s vysokou dostupnosťou a integrovaným vyvažovaním záťaže.
  • Koncepty sietí uzlov, manažérov, pracovníkov, služieb, úloh a prekrývajúcich sa sietí sú základom pre pochopenie toho, ako Swarm spravuje a distribuuje kontajnery.
  • Príkazy ako docker swarm init, docker service create alebo docker service scale uľahčujú nasadzovanie, škálovanie a aktualizáciu aplikácií.
  • Swarm sa veľmi dobre hodí do malých a stredne veľkých projektov, integruje sa s cloudovými službami, DevOps postupmi, umelou inteligenciou a obchodnou inteligenciou.

Orchestrácia kontajnerov Docker Swarm

Správa desiatok alebo stoviek kontajnerov rozmiestnených na viacerých počítačoch sa môže stať poriadnou bolesťou hlavy, ak sa spoliehate len na základný Docker. Keď začnete hovoriť o vysokej dostupnosti, automatickom škálovaní alebo nasadení bez prestojov, potrebujete viac než len jednotlivé kontajnery: potrebujete orchestráciu kontajnerov . A práve tu prichádza na rad Docker Swarm, natívne riešenie Dockeru na koordináciu kontajnerov v rámci klastra.

Ak prechádzate z používania Docker Compose na jednom počítači a považujete ho za nedostatočný pre reálne prostredie, Swarm je ďalším logickým krokom. Umožňuje vám nastaviť klaster uzlov, distribuovať služby medzi nimi, vyvažovať záťaž, nahradiť havarované kontajnery a v konečnom dôsledku transformovať množstvo serverov do jednej, koherentnej a produkčnej platformy bez toho, aby ste museli priamo prejsť na Kubernetes , ak by ste ho považovali za príliš ťažkopádny alebo zložitý.

Čo je Docker Swarm a prečo je dôležitý pri orchestrácii kontajnerov?

Docker Swarm je engine pre klastrovanie a orchestráciu zabudovaný priamo do Dockeru. Nie je to externý nástroj, ale skôr režim fungovania samotného Docker Engine, ktorý umožňuje zoskupiť viacero počítačov (fyzických alebo virtuálnych) do logického klastra nazývaného swarm, na ktorom namiesto izolovaných kontajnerov nasadzujete služby.

Krása Swarmu spočíva v tom, že abstrahuje celú sadu uzlov a umožňuje vám pracovať, akoby ste mali jeden „superserver“. Definujete služby, ich počet replík, exponované porty a obmedzenia a Swarm rozhodne, kde spustiť každý kontajner (úlohu), ako ich prerozdeliť, ak uzol zlyhá, a ako vyvážiť prevádzku medzi nimi.

Pokiaľ ide o orchestráciu kontajnerov , Docker Swarm pokrýva typické potreby mnohých DevOps tímov: jednoduché horizontálne škálovanie, základnú vysokú dostupnosť, interné vyvažovanie záťaže, vrstvené siete medzi uzlami a kontrolované nasadenie, vďaka čomu je vhodný pre architektúry mikroslužieb . Je obzvlášť zaujímavý pre malé a stredné projekty alebo pre organizácie, ktoré sú veľmi dobre oboznámené s ekosystémom Docker a nevyžadujú plnú komplexnosť Kubernetes.

Swarm sa výborne hodí do scenárov, kde je kľúčová jednoduchosť : laboratóriá, testovacie prostredia, lokálne klastre v rámci malých a stredných podnikov alebo dokonca cloudová produkcia, keď nechcete spravovať zložitú platformu. Okrem toho sa bezproblémovo integruje s CI/CD pipeline a DevOps postupmi, ktoré už používajú Docker na balenie aplikácií.

Klaster Docker Swarm pre kontajnery

Kľúčové koncepty v Docker Swarm: uzly, služby a siete

Predtým, ako začnete písať príkazy ako blázni , je nevyhnutné pochopiť, ako sa Swarm vzťahuje na každý dielik skladačky. Toto sú koncepty, s ktorými sa budete neustále stretávať v rozhraní príkazového riadka a dokumentácii.

Uzol je akýkoľvek stroj, ktorý je súčasťou roja; môže to byť fyzický server, virtuálny počítač v cloude alebo dokonca váš notebook v testovacom prostredí. Každý uzol spúšťa Docker Engine a registruje sa v klastri pomocou špecifickej role.

Manažérsky uzol : Toto je mozog klastra. Je zodpovedný za udržiavanie požadovaného stavu, plánovanie úloh a riadenie operácií. Môže existovať viacero manažérov, aby sa zabezpečila vysoká dostupnosť riadiacej roviny, ale jeden z nich koná ako vedúci a koordinuje ostatných.

Pracovné uzly : Toto sú „pracovníci“ roja. Nerobia rozhodnutia o orchestrácii; jednoducho vykonávajú úlohy (kontajnery), ktoré im pridelil manažér. To umožňuje škálovanie výpočtovej kapacity pridávaním ďalších pracovníkov podľa potreby.

Služba je jednotkou nasadenia v Swarme. Definuje obraz kontajnera, ktorý sa má použiť, počet replík, porty, premenné prostredia, konfigurácie, tajné kódy a ďalšie možnosti. Na rozdiel od spustenia jedného kontajnera pomocou príkazu `docker run`, príkaz `docker service create` popisuje službu, ktorú Swarm udržiava v požadovanom stave.

Úloha je konkrétna inštancia kontajnera spojeného so službou a priradeného k uzlu. Ak požadujete službu s 3 replikami, Swarm vytvorí 3 úlohy. Ak úloha zlyhá, manažér vytvorí ďalšiu, aby sa zachoval počet replík.

Prekrývajúca sieť : Ide o typ distribuovanej virtuálnej siete, ktorá umožňuje kontajnerom umiestneným na rôznych uzloch komunikovať, akoby boli v tej istej lokálnej sieti. Swarm sa spolieha na tieto prekrývajúce siete na prepojenie služieb, vyrovnávanie záťaže medzi replikami a izoláciu aplikácií od seba navzájom.

Prvé kroky: inicializácia a testovanie klastra Docker Swarm

Nastavenie základného swarmu je prekvapivo jednoduché, ak už máte na svojich počítačoch nainštalovaný Docker. Nepotrebujete žiadny ďalší softvér: stačí povoliť režim swarmu a pripojiť uzly ku klastru.

  Windows 11 Build 27965: Všetko nové, zmeny a opravy

Krok 1: Vytvorte prvého správcu . Na počítači, ktorý chcete použiť ako počiatočný uzol správcu, spustite:

docker swarm init –advertise-addr

Parameter `--advertise-addr` určuje IP adresu , ktorú ostatné uzly použijú na zobrazenie tohto správcu. Po spustení príkazu Docker automaticky zobrazí token a príkaz pripravený pre ostatné uzly, aby sa pripojili k roju ako pracovníci.

Krok 2: Pripojte pracovné uzly ku klastru . Na každom počítači, ktorý bude fungovať ako pracovný uzl, spustite niečo podobné:

docker swarm join –token :2377

Token pripojenia a IP adresa správcu sú výstupom príkazu `docker swarm init`. Port 2377 sa štandardne používa na riadiacu komunikáciu. Od tohto bodu sa uzol bude zobrazovať ako súčasť roja a bude pripravený prijímať úlohy.

Kontrola stavu klastra je rovnako jednoduchá ako prístup k správcovi (nefunguje to na izolovanom pracovníkovi) a spustenie:

uzol docker ls

Tento príkaz vám zobrazí všetky uzly v roji , ich ID, názov hostiteľa, rolu (manažér alebo pracovník) a aktuálny stav. Odtiaľto môžete zistiť, či je niektorý uzol nefunkčný, v režime vyprázdňovania alebo má problémy s pripojením.

Nasadzovanie služieb v Docker Swarm: od prvého nginxu až po produkčný systém

Keď už máte klaster spustený a spustený , začína sa zaujímavá časť: nasadenie služieb. Namiesto spúšťania jednotlivých kontajnerov pomocou príkazu „docker run“ definujete služby, ktoré Swarm automaticky udržiava a vyvažuje.

Vytvorenie jednoduchej služby, ako je webový server Nginx, prístupný zvonku klastra, sa vykonáva pomocou príkazu, ako je tento:

vytvorenie služby docker –názov my-nginx -p 80:80 nginx

Týmto sa spustí služba s názvom my-nginx , ktorá sprístupní port 80 kontajnera portu 80 uzlov klastra. Swarm sa stará o publikovanie služby a vyrovnávanie záťaže prichádzajúcich požiadaviek medzi rôznymi replikami počas ich škálovania.

Zoznam nasadených služieb vám pomôže sledovať, čo beží v roji:

dokovacia služba ls

Tu vidíte názov služby, jej režim a počet replík v aktuálnom/požadovanom formáte. Napríklad, ak zobrazíte 3/5, znamená to, že sa stále vytvárajú úlohy na dosiahnutie požadovaného stavu.

Kontrola podrobností a stavu úloh pre konkrétnu službu vám umožňuje identifikovať, na ktorom uzle je každá inštancia spustená:

dockerova služba ps my-nginx

Výstup zobrazuje úlohy, priradený uzol , stav (Spustené, Príprava, Vypnuté atď.), použitý obraz a čas spustenia. Toto je nevyhnutné na ladenie problémov s nasadením alebo vyvažovaním záťaže.

Riadenie životného cyklu: škálovanie, aktualizácia a odstraňovanie služieb

Jednou z veľkých výhod orchestrácie je možnosť škálovať a aktualizovať služby bez nutnosti prechádzať server po serveri. Swarm to značne uľahčuje z príkazového riadku.

Škálovanie služby v Docker Swarm znamená zadanie celkového počtu replík služby, ktoré chcete vytvoriť. Napríklad, ak ste vytvorili my-nginx s jednou replikou a chcete ich počet zvýšiť na tri:

škálovanie služby docker my-nginx=3

Swarm spracováva plánovanie nových úloh na dostupných uzloch s ohľadom na zdroje a stav pracovníkov. Ak budete neskôr potrebovať ešte väčšiu kapacitu, môžete upgradovať na päť replík pomocou:

škálovanie služby docker my-nginx=5

Aktualizácia obrazu služby je ďalším kľúčovým bodom, najmä v produkčnom prostredí. Namiesto manuálneho zastavovania a odstraňovania kontajnerov môžete vykonať kontrolovanú aktualizáciu:

aktualizácia služby docker –image nginx:latest my-nginx

Tento príkaz dáva Swarmu pokyn postupne migrovať existujúce úlohy do nového obrazu podľa definovanej stratégie aktualizácie (štandardne priebežná aktualizácia). Tým sa minimalizuje dopad na koncových používateľov.

Odstránenie služby, keď ju už nepotrebujete, sa tiež vykonáva na úrovni roja, nie na úrovni jednotlivého kontajnera:

docker service rm my-nginx

Toto zastaví a odstráni všetky súvisiace úlohy zo Swarmu , čím sa uvoľnia zdroje na uzloch. Je to čistý spôsob, ako vyradiť komponenty, ktoré už v rámci vašej architektúry nedávajú zmysel.

Sprievodca praxou: nastavenie vlastného klastra a nasadenie služby

Na upevnenie základných konceptov sa nič nevyrovná malému cvičeniu , ktoré môžete replikovať v laboratórnom prostredí s lokálnymi virtuálnymi počítačmi alebo lacnými cloudovými inštanciami.

Cvičenie 1: Nakonfigurujte klaster Docker Swarm . Cieľom je mať aspoň tri uzly: jeden ako správcu a dva ako pracovníkov. Na správcovi povoľte swarm pomocou:

docker swarm init –advertise-addr

Ďalej skopírujte príkaz join zobrazený vo výstupe a spustite ho na každom pracovníkovi:

docker swarm join –token :2377

Skontrolujte, či všetko prebehlo v poriadku s:

  Windows 11 26H1: Špeciálna aktualizácia pre počítače ARM

uzol docker ls

Manažér bude mať status Vedúci a pracovníci budú mať status Aktívni. Ak sa niektorí zobrazia ako Nefunkční, skontrolujte pripojenie, firewall a verziu Dockeru.

Cvičenie 2: Nasadenie a škálovanie služby . Keď je klaster pripravený, vytvorte službu nginx prístupnú cez HTTP:

vytvorenie služby docker –názov my-nginx -p 80:80 nginx

Overte si jeho existenciu pomocou :

dokovacia služba ls

Škálujte službu na tri repliky pomocou:

škálovanie služby docker my-nginx=3

Skontrolujte, kam boli úlohy nasadené pomocou:

dockerova služba ps my-nginx

Ako základné riešenie cvičenia by ste mali vidieť tri úlohy rozdelené medzi rôzne uzly (ak je dostatok zdrojov) a pri odosielaní HTTP požiadaviek na port 80 klastra Swarm smeruje prevádzku do rôznych replík podľa svojho interného vyrovnávača záťaže.

Výhody Docker Swarm oproti manuálnej správe kontajnerov

Používanie Swarmu namiesto spúšťania jednotlivých kontajnerov ponúka množstvo výhod, ktoré sa prejavia v momente, keď potrebujete viac než len jednoduché testovacie prostredie.

Jednoduché nasadenie integrované do Docker CLI : nemusíte sa učiť úplne nový nástroj; príkazy na správu služieb a klastrov sú veľmi podobné tým, ktoré už robíte s docker run, docker ps alebo docker images.

Vstavané vyvažovanie záťaže : Keď sprístupníte službu s parameterom `-p`, Swarm inzeruje port na potrebných uzloch a rozdeľuje prevádzku medzi dostupné repliky. Na rozdeľovanie požiadaviek nemusíte pridávať základný externý vyvažovač záťaže, ako je Traefik , čo zjednodušuje počiatočnú architektúru.

Vysoká dostupnosť a odolnosť voči chybám : Ak dôjde k zlyhaniu kontajnera alebo pracovného uzla, Swarm zistí stratu úloh a pokúsi sa ich znovu vytvoriť na iných uzloch, aby sa zachoval počet replík. Tým sa zabráni mnohým výpadkom služieb v dôsledku izolovaných zlyhaní.

Centralizovaná správa požadovaného stavu : deklarujete, koľko replík chcete, ktorý obraz použiť, ktoré porty otvoriť a aké obmedzenia uplatniť, a klaster sa postará o konvergenciu do tohto stavu. Budúce zmeny (aktualizácie, škálovanie, vyprázdňovanie uzlov) sú tiež riadené z tejto riadiacej roviny.

Kedy má zmysel používať Docker Swarm vo vašich projektoch

Nie všetky situácie vyžadujú Kubernetes alebo vylepšené mikroslužby . Docker Swarm sa veľmi dobre hodí do mnohých prípadov použitia, kde je potrebná rovnováha medzi jednoduchosťou a možnosťami orchestrácie.

Malé a stredné produkčné klastre : Ak spravujete niekoľko obchodných aplikácií, API alebo interných služieb a vaša infraštruktúra nie je rozsiahla, Swarm ponúka to, čo potrebujete, bez toho, aby ste sa museli učiť rozsiahly ekosystém.

Tímy silne integrované s Dockerom , ktoré chcú prejsť na orchestráciu bez toho, aby sa museli utápať v krivke učenia Kubernetes. Keďže Swarm je súčasťou samotného Docker Engine, prechod je zvyčajne plynulejší a rýchlejší.

Cloudové prostredia a distribuované architektúry , kde chcete naďalej používať spravované služby od hlavných poskytovateľov (databázy, fronty správ, úložisko atď.), zatiaľ čo vaše aplikácie bežia v kontajneroch orchestrovaných pomocou Swarmu. Je to rozumný spôsob, ako skombinovať jednoduchosť s cloudovými možnosťami.

DevOps a automatizácia sa používajú v prípadoch , keď potrebujete kanály, ktoré vytvárajú obrazy, nahrávajú ich do registra a automaticky ich nasadzujú do klastra. Swarm sa dobre integruje s nástrojmi CI/CD a umožňuje rýchle cykly nepretržitého dodávania.

Keď potrebujete extrémnu kontrolu, rozsiahly ekosystém alebo komplexné integrácie, Kubernetes môže mať väčší zmysel. Pre mnohé projekty v reálnom svete však Swarm poskytuje potrebnú orchestráciu s menšími prevádzkovými problémami.

Praktické príručky a prístup DevOps: od základov až po pokročilé nasadenie

Ak ste sa cítili stratení uprostred roztrúsených tutoriálov, zvláštnych produkčných chýb a nesúvislej dokumentácie o Docker Swarm, nie ste sami. Mnoho vývojových a prevádzkových tímov sa ocitá zahltených pri prechode z jednotlivých kontajnerov na orchestrovanú platformu.

Komplexná príručka DevOps zameraná na Swarm je zvyčajne rozdelená do niekoľkých kľúčových blokov. Po prvé, stanovuje základy Dockeru: vytváranie obrazov, správu a optimalizáciu kontajnerov , používanie registra a osvedčené postupy balenia. Tento pevný základ je nevyhnutný na to, aby sa orchestrácia neskôr nestala nočnou morou.

Ďalej sa hlbšie ponoríme do sietí a perzistencie : typy sietí Docker (most, host, overlay, macvlan), správa zväzkov a perzistencia dát, ako aj nasadzovanie aplikácií s viacerými kontajnermi pomocou Docker Compose. To vám poskytne jasný model toho, ako by mal váš stack vyzerať pred jeho nasadením do distribuovaného roja.

Ďalšia úroveň sa zameriava na implementáciu služieb Swarm a pokrýva všetko od inicializácie klastrov až po pokročilé funkcie, ako sú tajné heslá, konfigurácie a zásobníky. Tu pracujete s deklaratívnymi definíciami služieb, šifrovanými prihlasovacími údajmi a zdieľanými konfiguráciami naprieč kontajnermi.

Ďalšou dôležitou oblasťou je vyvažovanie záťaže, protokolovanie a pozorovateľnosť : naučiť sa, ako správne sprístupniť služby, kontrolovať protokoly, identifikovať úzke miesta a aplikovať techniky riešenia problémov na udržanie vysokej dostupnosti na dennej báze. Pre monitorovanie a diagnostiku systémov bude veľmi užitočná pokročilá príručka monitorovania , ktorá zahŕňa metriky a upozornenia.

  Typy webových serverov: Kompletný sprievodca

Nakoniec je všetko integrované do DevOps procesov s praktickými programovacími cvičeniami: od automatizovaného zostavovania obrazov až po priebežné nasadzovanie v klastri, čím sa zabezpečí, že každá zmena kódu sa spoľahlivo a opakovateľne dostane do produkčného prostredia.

Viac než len základy: Docker siete a ďalšie kroky so Swarmom

Keď zvládnete spustenie klastra a prvých služieb , ďalšou úrovňou je zvyčajne dôkladné pochopenie toho, ako vaše kontajnery komunikujú medzi sebou a s vonkajším svetom.

Docker bridge a hostiteľské siete riadia veľkú časť komunikácie na jednom počítači, zatiaľ čo prekrývajúce siete sú kľúčové pre prepojenie kontajnerov medzi rôznymi uzlami v rámci roja. Pochopenie ich rozdielov, kedy ich použiť a ako interagujú s externými firewallmi a vyrovnávačmi záťaže je nevyhnutné, aby sa predišlo prekvapeniam v produkcii.

Siete ako macvlan umožňujú priradiť kontajnerom „skutočné“ IP adresy z fyzickej siete, čo môže byť veľmi užitočné v špecifických prostrediach, kde potrebujete, aby sa služby správali ako nezávislí hostitelia na úrovni siete, ale zároveň to zvyšuje zložitosť a ďalšie požiadavky na konfiguráciu.

„Hĺbkový ponor“ do sietí Docker vám pomôže lepšie zosúladiť návrh služby Swarm s topológiou siete vašej organizácie alebo poskytovateľa cloudu, jasne definovať, ktoré služby sú interné, ktoré sú vystavené vonkajšiemu svetu a ako segmentovať prevádzku medzi prostrediami (vývoj, testovanie, produkcia).

Ďalšou zaujímavou oblasťou vývoja v Swarme je hlbšie využitie tajných údajov a konfigurácií na správu poverení, certifikátov a konfiguračných súborov bez ich priameho vkladania do obrazu alebo použitia obyčajných premenných prostredia. To zvyšuje bezpečnosť a robí správu prostredia oveľa organizovanejšou.

Služby vývoja na mieru, cloudu a business intelligence postavené na platforme Docker Swarm

Orchestrácia kontajnerov nie je izolovaná od zvyšku IT ekosystému . Vývojové spoločnosti špecializujúce sa na vlastné aplikácie a softvér na mieru sa často spoliehajú na kontajnerové platformy ako Swarm, aby poskytovali robustnejšie a škálovateľnejšie riešenia.

Integrácia Swarmu s cloudovými službami AWS a Azure umožňuje nasadenie flexibilných klastrov

a využívať spravované cloudové komponenty (databázy, fronty správ, úložisko objektov) a zároveň si zachovávať priamu kontrolu nad vrstvou vykonávania kontajnerov.

Súčasne umelá inteligencia a AI pre podniky veľmi dobre zapadajú do organizovaného prostredia s kontajnermi: modely AI, inferenčné mikroslužby a agenti AI môžu bežať ako služby Swarm, ktoré sa škálujú podľa záťaže, čím sa zabráni tomu, aby sa jeden stroj stal úzkym hrdlom.

V oblasti business intelligence a Power BI uľahčuje nasadenie backendu na Docker Swarm robustné extrahovanie údajov z API, ETL služieb a procesných kanálov. Orchestrácia zabezpečuje, že tieto služby sú vždy k dispozícii na poskytovanie informácií pre dashboardy a analytické nástroje.

Kybernetická bezpečnosť v tejto súvislosti tiež nadobúda na význame : dobre nakonfigurovaný klaster s komunikáciou TLS, kontrolovanými aktualizáciami obrazov, skenovaním zraniteľností a centralizovanou správou tajných údajov znižuje riziká v porovnaní s chaotickým nasadením nezávislých kontajnerov. Okrem toho postupy posilňovania a kontrola prístupu zvyšujú celkovú ochranu prostredia.

Kombinácia vývoja na mieru, cloudových služieb, umelej inteligencie a biznis inteligencie na orchestračnej platforme, ako je Docker Swarm, vám v konečnom dôsledku umožňuje vytvárať moderné, škálovateľné a odolné riešenia bez zvýšenia technickej zložitosti alebo prevádzkových nákladov.

Zvládnutie Docker Swarm ako nástroja na orchestráciu kontajnerov vás stavia do veľmi silnej pozície vo svete DevOps: prejdete od problémov s rozptýlenými kontajnermi a krehkými nasadeniami k práci s koherentným, škálovateľným a bezpečným klastrom, schopným podporovať všetko od jednoduchých webových aplikácií až po distribuované architektúry s cloudovými službami, umelou inteligenciou, automatizáciou a integrovanými riešeniami business intelligence.

Docker Swarm edge
Súvisiaci článok:
Docker Swarm a Portainer Edge pre nasadenie na okraji siete