Docker Compose vs Docker Swarm

Docker Compose Vs Docker Swarm



Līdz ar konteinera “revolūcijas” lietotnēm ir kļuvis daudz vairāk nekā tikai datu bāze un priekšpuse. Lietojumprogrammas ir sadalītas dažādos mikropakalpojumos, un tās parasti sazinās viena ar otru, izmantojot REST API (parasti JSON formatētas lietderīgās slodzes, izmantojot HTTP). Docker konteineri ir ideāli piemēroti šāda veida arhitektūrai. Jūs varat iesaiņot savu priekšgala “mikropakalpojumu” Docker konteinerā, datu bāze nonāk citā un tā tālāk. Katrs pakalpojums runā ar citu, izmantojot iepriekš noteiktu REST API, nevis monolītu, kas rakstīts kā viena programmatūra.

Ja jums jāievieš jauna funkcionalitāte vai funkcija, piemēram, analītikas dzinējs, varat tam vienkārši uzrakstīt jaunu mikropakalpojumu, un tas patērēs datus, izmantojot REST API, ko atklāj dažādi jūsu tīmekļa lietotnes mikropakalpojumi. Un, tā kā jūsu funkcionalitāte laika gaitā palielinās, līdz ar to palielināsies arī šis mikropakalpojumu saraksts.







Jūs nevēlaties izvietot katru atsevišķu konteineru, konfigurēt to un pēc tam konfigurēt visu pārējo, lai arī ar to runātu. Tas būs garlaicīgi pat ar trim konteineriem. Docker-Compose ļauj automatizēt vairāku konteineru izvietošanu.



Docker-Compose ir viens no vienkāršākajiem rīkiem, kas palīdz abstrakto ideju par mikropakalpojumiem pārveidot par funkcionālu Docker konteinera komplektu.



Izplatītās sistēmas

Tagad, kad esam sadalījuši tīmekļa lietotni vairākos konteineros, nav jēgas tos visus glabāt vienā serverī (vēl ļaunāk - vienā virtuālajā mašīnā!), Kur tiek izmantoti tādi pakalpojumi kā Docker Swarm un Kubernetes.





Docker Swarm ļauj palaist vairākas lietojumprogrammas kopijas vairākos serveros. Ja jūsu mikropakalpojums ir uzrakstīts tā, lai to varētu mērogot “horizontāli”, varat izmantot Docker Swarm, lai izvietotu savu tīmekļa lietotni vairākos datu centros un vairākos reģionos. Tas nodrošina izturību pret viena vai vairāku datu centru vai tīkla saišu kļūmēm. To parasti veic, izmantojot Docker apakškomandu, tas ir, Docker Stack.

The Docker kaudze apakškomanda darbojas daudz vairāk kā komanda Docker-Compose, un tas var radīt nepareizus priekšstatus kādam, kurš izmanto kādu no tehnoloģijām.



Apjukuma avots

Lietošanas un darbplūsmas ziņā abas tehnoloģijas darbojas ļoti līdzīgi, un tas rada neskaidrības. Lietotnes izvietošanas veids, izmantojot Docker Swarm vai Docker-Compose, ir ļoti līdzīgs. Jūs definējat savu lietojumprogrammu YAML failā, šajā failā būs attēla nosaukums, katra attēla konfigurācija un arī skala (kopiju skaits), kas katram mikroservisam būs jāizpilda izvietošanas laikā.

Atšķirība galvenokārt ir aizmugurē, kur docker-compose izvieto konteineru vienā Docker resursdatorā, Docker Swarm izvieto to vairākos mezglos. Brīvi runājot, tā joprojām var paveikt lielāko daļu to, ko var izveidot docker-compose, taču tā to mērogo vairākos Docker saimniekdatoros.

Līdzības

Gan Docker Swarm, gan Docker-Compose ir šādas līdzības:

  1. Viņi abi izmanto jūsu lietojumprogrammu kaudzes YAML formatētās definīcijas.
  2. Tie abi ir paredzēti vairāku konteineru lietojumprogrammām (mikropakalpojumiem)
  3. Abiem ir mēroga parametrs, kas ļauj palaist vairākus viena attēla konteinerus, ļaujot jūsu mikropakalpojumam mērogot horizontāli.
  4. Tos abus uztur viens uzņēmums, ti, Docker, Inc.

Atšķirības

Dažas atšķirības starp Docker Swarm un Docker-Compose:

  1. Docker Swarm tiek izmantots jūsu tīmekļa lietotnes mērogošanai vienā vai vairākos serveros. Kur kā Docker-compose vienkārši palaist jūsu tīmekļa lietotni vienā Docker saimniekdatorā.
  2. Tīmekļa lietotnes mērogošana Docker Swarm piedāvā nopietnu augstu pieejamību un kļūdu toleranci. Tīmekļa lietotnes mērogošana, izmantojot Docker-Compose vienā saimniekdatorā, ir noderīga tikai testēšanai un izstrādei.
  3. Docker Swarm un ar to saistītās apakškomandas, piemēram, Docker Swarm un Docker Stack, ir iebūvētas pašā Docker CLI. Tie visi ir daļa no Docker binārā, uz kuru zvanāt, izmantojot savu termināli. Docker-Compose ir patstāvīgs binārs.

A Docker-Compose lietošanas gadījums

Kā aprakstīts iepriekš, tie abi ir pilnīgi atšķirīgi rīki un katrs risina pilnīgi atšķirīgu problēmu, tāpēc nav tā, ka viens ir alternatīva otram. Tomēr, lai jaunpienācēji varētu saprast, par ko es runāju, šeit ir Docker Compose lietošanas gadījums.

Pieņemsim, ka vēlaties patstāvīgi mitināt WordPress emuāru vienā serverī. Tā iestatīšana vai uzturēšana nav tas, ko vēlaties darīt manuāli, tāpēc tas, ko jūs darītu, ir instalēt Docker un Docker-compose savā VPS, izveidojiet vienkāršu YAML failu, kas definē visus jūsu WordPress steka dažādus aspektus, piemēram, zemāk, :

Piezīme. Ja WordPress vietnes izvietošanai izmantojat tālāk norādīto, lūdzu, nomainiet visas paroles uz kaut ko drošu. Vēl labāk, izmantojiet Docker Secrets, lai uzglabātu sensitīvus datus, piemēram, paroles, nevis tos glabātu vienkāršā teksta failā.

versija:'3'

pakalpojumi:
db:
attēls: mysql:5.7
apjomi:
- db_data:/kur/lib/mysql
restartēt: vienmēr
vide:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: WordPress
MYSQL_PASSWORD: wordpress

WordPress:
atkarīgs no:
- db
attēls: wordpress: jaunākais
ostas:
-'8000: 80'
restartēt: vienmēr
vide:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpressPassword
WORDPRESS_DB_NAME: WordPress
apjomi:
db_data:{}

Kad fails ir izveidots un ir instalētas gan Docker, gan Docker-compose, viss, kas jums jādara, ir palaist:

$docker-komponēt-d

Un jūsu vietne sāks darboties. Ja ir atjauninājums, palaidiet:

$docker-komponēt uz leju

Pēc tam izmetiet vecos Docker attēlus un palaidiet komandu docker -compose up -d, un jaunie attēli tiks automātiski ievilkti. Tā kā pastāvīgi dati ir saglabāti Docker sējumā, jūsu vietnes saturs netiks zaudēts.

Kad lietot Docker Swarm

Lai gan Docker-compose ir vairāk automatizācijas rīks, Docker Swarm ir paredzēts prasīgākām lietojumprogrammām. Tīmekļa lietotnes ar simtiem vai tūkstošiem lietotāju vai darba slodzi, kas ir paralēli jāmēro. Uzņēmumi ar lielu lietotāju bāzi un stingrām SLA prasībām vēlētos izmantot tādu izplatītu sistēmu kā Docker Swarm. Ja jūsu lietotne darbojas vairākos serveros un vairākos datu centros, dīkstāves iespējamība ietekmēta līdzstrāvas vai tīkla saites dēļ ievērojami samazinās.

Tomēr es vilcinos ieteikt Docker Swarm ražošanas vajadzībām, jo ​​konkurējošas tehnoloģijas, piemēram, Kubernetes, neapšaubāmi ir piemērotākas šim uzdevumam. Kubernetes tiek sākotnēji atbalstīts daudzos mākoņa pakalpojumu sniedzējos, un tas diezgan labi darbojas ar Docker Containers, tāpēc jums pat nav jāpārveido lietotne, lai izmantotu Kubernetes priekšrocības.

Secinājums

Es ceru, ka šis satricinājums Docker un tā satelītu projektos bija informatīvs un jūs esat vairāk gatavi docker ekosistēmai.