„Docker Compose“ prieš „Docker Swarm“

Docker Compose Vs Docker Swarm



Su konteinerių „revoliucijos“ programomis išaugo daugiau nei tik duomenų bazė ir sąsaja. Programos yra suskirstytos į įvairias mikropaslaugas ir paprastai bendrauja tarpusavyje per REST API (paprastai JSON formatuotos naudingos apkrovos per HTTP). „Docker“ konteineriai idealiai tinka tokiai architektūrai. Galite supakuoti savo „mikropaslaugą“ į „Docker“ konteinerį, duomenų bazė pereina į kitą ir pan. Kiekviena paslauga kalbasi su kita per iš anksto nustatytą REST API, o ne monolitą, parašytą kaip viena programinė įranga.

Jei jums reikia įdiegti naują funkciją ar funkciją, pvz., Analizės variklį, galite tiesiog parašyti naują mikroserviso paslaugą ir ji sunaudos duomenis per REST API, kurią atskleidžia įvairios jūsų žiniatinklio programos mikro paslaugos. Laikui bėgant jūsų funkcionalumui didėjant, kartu padidės ir šis mikropaslaugų sąrašas.







Jūs nenorite diegti kiekvieno atskiro konteinerio, sukonfigūruokite jį ir tada sukonfigūruokite visa kita, kad su juo taip pat būtų kalbama. Tai bus nuobodu net su trimis konteineriais. „Docker-Compose“ leidžia automatizuoti kelių konteinerių diegimą.



„Docker-Compose“ yra vienas iš paprasčiausių įrankių, padedančių abstrakčią mikroserviso idėją paversti funkciniu „Docker“ talpyklos rinkiniu.



Paskirstytos sistemos

Dabar, kai žiniatinklio programą padalijome į kelis konteinerius, nėra prasmės juos visus laikyti viename serveryje (dar blogiau - vienoje virtualioje mašinoje!), Čia atsiranda tokios paslaugos kaip „Docker Swarm“ ir „Kubernetes“.





„Docker Swarm“ leidžia paleisti kelias jūsų programos kopijas keliuose serveriuose. Jei jūsų mikro paslauga parašyta taip, kad ją būtų galima keisti „horizontaliai“, galite naudoti „Docker Swarm“, kad savo žiniatinklio programą įdiegtumėte keliuose duomenų centruose ir keliuose regionuose. Tai suteikia atsparumo vieno ar kelių duomenų centrų ar tinklo nuorodų gedimui. Paprastai tai daroma naudojant „Docker“ antrinę komandą, ty „Docker Stack“.

The „Docker“ krūva antrinė komanda elgiasi daug panašiau į komandą „Docker-Compose“ ir tai gali sukelti klaidingų nuomonių tiems, kurie naudoja bet kurią iš technologijų.



Sumišimo šaltinis

Kalbant apie naudojimą ir darbo eigą, abi technologijos veikia labai panašiai, todėl kyla painiavos. Programos diegimo būdas naudojant „Docker Swarm“ arba „Docker-Compose“ yra labai panašus. Jūs apibrėžiate savo programą YAML faile, šiame faile bus vaizdo pavadinimas, kiekvieno vaizdo konfigūracija ir skalė (kopijų skaičius), kurią kiekviena mikroservisas turės patenkinti diegdamas.

Skirtumas daugiausia slypi užpakalinėje sistemoje, kur „docker-compose“ talpina konteinerį viename „Docker“ priegloboje, o „Docker Swarm“ jį išskleidžia keliuose mazguose. Laisvai kalbant, jis vis tiek gali padaryti daugumą dalykų, kuriuos gali padaryti „docker-compose“, tačiau jis jį keičia daugelyje „Docker“ kompiuterių.

Panašumai

„Docker Swarm“ ir „Docker-Compose“ turi šiuos panašumus:

  1. Jie abu naudoja YAML suformatuotus jūsų programos kamino apibrėžimus.
  2. Jie abu skirti daugiapakopėms programoms (mikroservisams)
  3. Abu jie turi mastelio parametrą, kuris leidžia paleisti kelis to paties vaizdo konteinerius, leidžiantį jūsų mikroservisui keisti mastelį horizontaliai.
  4. Juos abu prižiūri ta pati įmonė, ty „Docker, Inc.

Skirtumai

Keletas skirtumų tarp „Docker Swarm“ ir „Docker-Compose“:

  1. „Docker Swarm“ naudojama jūsų žiniatinklio programos mastelio keitimui viename ar daugiau serverių. Kur „Docker-compose“ tiesiog paleis jūsų žiniatinklio programą viename „Docker“ priegloboje.
  2. Žiniatinklio programos mastelio keitimas „Docker Swarm“ siūlo didelį prieinamumą ir atsparumą gedimams. Žiniatinklio programos mastelio keitimas naudojant „Docker-Compose“ viename priegloboje yra naudingas tik bandymams ir kūrimui.
  3. „Docker Swarm“ ir susijusios antrinės komandos, tokios kaip „Docker Swarm“ ir „Docker Stack“, yra integruotos į pačią „Docker CLI“. Jie visi yra „Docker“ dvejetainės sistemos, į kurią skambinate per savo terminalą, dalis. „Docker-Compose“ yra atskira dvejetainė programa.

„Docker-Compose“ naudojimo atvejis

Kaip aprašyta aukščiau, jie abu yra visiškai skirtingi įrankiai ir kiekvienas išsprendžia visiškai skirtingą problemą, todėl nėra taip, kad vienas yra alternatyva kitam. Tačiau, kad nauji dalyviai suprastų, apie ką aš kalbu, čia yra „Docker Compose“ naudojimo atvejis.

Tarkime, kad norite savarankiškai priglobti „WordPress“ tinklaraštį viename serveryje. Nustatydami ar prižiūrėdami ne tai, ką norite padaryti rankiniu būdu, taigi, ką jūs darytumėte, tai įdiegti „Docker“ ir „Docker-compose“ savo VPS, sukurti paprastą YAML failą, apibrėžiantį visus įvairius „WordPress“ kamino aspektus, kaip nurodyta toliau, :

Pastaba: jei naudojate toliau pateiktą „WordPress“ svetainės diegimo būdą, pakeiskite visus slaptažodžius į kažką saugaus. Dar geriau, naudokite „Docker Secrets“, kad saugotumėte neskelbtinus duomenis, pvz., Slaptažodžius, o ne turėtumėte juos paprasto teksto faile.

versija:„3“

paslaugos:
db:
vaizdas: mysql:5.7
tomai:
- db_data:/kur/lib/mysql
iš naujo: visada
aplinka:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: „WordPress“
MYSQL_USER: „WordPress“
MYSQL_PASSWORD: „WordPress“

„WordPress“:
priklauso nuo:
- db
vaizdas: wordpress: naujausia
uostai:
-„8000: 80“
iš naujo: visada
aplinka:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: „WordPress“
WORDPRESS_DB_PASSWORD: wordpressPassword
WORDPRESS_DB_NAME: „WordPress“
tomai:
db_data:{}

Sukūrus failą ir įdiegus „Docker“ ir „Docker-compose“, tereikia paleisti:

$docker-komponuoti-d

Ir jūsų svetainė veiks ir veiks. Jei yra atnaujinimas, paleiskite:

$docker-komponuoti žemyn

Tada išmeskite senus „Docker“ vaizdus ir paleiskite komandą „docker -compose up -d“, o nauji vaizdai bus automatiškai įtraukti. Kadangi nuolatiniai duomenys saugomi „Docker“ tome, jūsų svetainės turinys nebus prarastas.

Kada naudoti „Docker Swarm“

Nors „Docker-compose“ yra labiau automatizavimo įrankis, „Docker Swarm“ skirtas sudėtingesnėms programoms. Žiniatinklio programos, kuriose yra šimtai ar tūkstančiai vartotojų arba darbo krūvis, kurį reikia lygiagrečiai keisti. Įmonės, turinčios didelę vartotojų bazę ir griežtus SLA reikalavimus, norėtų naudoti tokią paskirstytą sistemą kaip „Docker Swarm“. Jei jūsų programa veikia keliuose serveriuose ir keliuose duomenų centruose, prastovos tikimybė dėl paveiktos nuolatinės srovės ar tinklo nuorodos žymiai sumažėja.

Tačiau nedvejodamas rekomenduoju „Docker Swarm“ naudoti gamyboje, nes konkuruojančios technologijos, tokios kaip „Kubernetes“, neabejotinai labiau tinka šiai užduočiai atlikti. „Kubernetes“ yra palaikomas daugelyje debesų paslaugų teikėjų ir gana gerai veikia su „Docker Containers“, todėl jums net nereikia iš naujo kurti programos, kad galėtumėte pasinaudoti „Kubernetes“ pranašumais.

Išvada

Tikiuosi, kad šis pokštas „Docker“ ir jo palydovų projektuose buvo informatyvus ir esate labiau pasiruošę doko ekosistemai.