Docker Compose vs Docker Swarm

Docker Compose Vs Docker Swarm

S revolucijom u kontejnerima, aplikacije su postale mnogo više od toga što su bile samo baza podataka i sučelje. Aplikacije su podijeljene na različite mikrousluge i obično međusobno komuniciraju putem REST API -ja (obično korisnički teret oblikovan u JSON -u preko HTTP -a). Docker kontejneri idealni su za ovu vrstu arhitekture. Svoju sučeljenu ‘mikroservisu’ možete zapakirati u Docker spremnik, baza podataka odlazi u drugu itd. I tako dalje. Svaka usluga razgovara s drugom putem unaprijed definiranog REST API -ja umjesto da bude monolit napisan kao jedan komad softvera.

Ako trebate implementirati novu funkcionalnost ili značajku, npr. Analitički mehanizam, jednostavno za to možete napisati novu mikro uslugu i ona će trošiti podatke putem REST API -ja koji otkrivaju različiti mikrousluge vaše web aplikacije. Kako vaša funkcionalnost raste s vremenom, tako će rasti i ovaj popis mikro usluga.



Ne želite implementirati svaki pojedinačni spremnik, konfigurirati ga, a zatim konfigurirati sve ostalo da razgovara s njim. To će postati dosadno čak i s tri spremnika. Docker-Compose omogućuje vam automatiziranje implementacije više spremnika.



Docker-Compose jedan je od najjednostavnijih alata koji vam pomaže pretvoriti apstraktnu ideju mikro usluga u funkcionalni skup Docker spremnika.



Distribuirani sustavi

Sada kada smo web aplikaciju podijelili u više spremnika, nema smisla držati ih sve na jednom poslužitelju (što je još gore na jednom virtualnom stroju!) I tu dolaze u obzir usluge poput Docker Swarm i Kubernetes.

Docker Swarm omogućuje vam pokretanje više replika vaše aplikacije na više poslužitelja. Ako je vaša mikro usluga napisana na način da može skalirati 'vodoravno', tada možete koristiti Docker Swarm za postavljanje vaše web aplikacije u više podatkovnih centara i više regija. To nudi otpornost na kvar jednog ili više podatkovnih centara ili mrežnih veza. To se obično radi pomoću pod naredbe u Dockeru, odnosno Docker Stacku.

The Docker Stack podnaredba ponaša se puno više poput naredbe Docker-Compose i to može dovesti do zabluda kod nekoga tko koristi bilo koju od tehnologija.



Izvor zabune

U pogledu korištenja i tijeka rada, obje tehnologije međusobno djeluju vrlo slično, što izaziva zabunu. Način na koji primjenjujete aplikaciju pomoću Docker Swarma ili Docker-Composea vrlo je sličan. Svoju aplikaciju definirate u YAML datoteci, ta će datoteka sadržavati naziv slike, konfiguraciju za svaku sliku te skalu (broj replika) koju će svaka mikro usluga morati ispuniti u implementaciji.

Razlika uglavnom leži u pozadini, gdje docker-compose postavlja spremnik na jednom Docker host-u, Docker Swarm ga raspoređuje na više čvorova. Uopšteno govoreći, još uvijek može raditi većinu stvari koje docker-compose može, ali ga skalira na više Docker hostova.

Sličnosti

I Docker Swarm i Docker-Compose imaju sljedeće sličnosti:

  1. Oboje uzimaju definicije vašeg stoga aplikacija u YAML formatu.
  2. Oboje su namijenjeni rješavanju aplikacija s više spremnika (mikrousluge)
  3. Obojica imaju parametar ljestvice koji vam omogućuje pokretanje više spremnika iste slike dopuštajući vašoj mikrousluzi da se vodoravno skalira.
  4. Oboje održava ista tvrtka, tj. Docker, Inc.

Razlike

Nekoliko razlika između Docker Swarma i Docker-Composea:

  1. Docker Swarm koristi se za skaliranje vaše web aplikacije na jednom ili više poslužitelja. Gdje će kao Docker-compose jednostavno pokrenuti vašu web aplikaciju na jednom Docker hostu.
  2. Povećanje vaše web aplikacije Docker Swarm nudi ozbiljnu visoku dostupnost i toleranciju grešaka. Skaliranje vaše web aplikacije pomoću Docker-Compose na jednom hostu korisno je samo za testiranje i razvoj.
  3. Docker Swarm i srodne pod naredbe poput Docker Swarma i Docker Stacka ugrađeni su u sam Docker CLI. Svi su oni dio Dockerove binarne datoteke koju pozivate putem svog terminala. Docker-Compose je samostalni binarni uređaj sam po sebi.

Slučaj upotrebe za Docker-Compose

Kao što je gore opisano, oboje su potpuno različiti alati i svaki rješava potpuno drugačiji problem pa nije isto što je jedno drugo alternativno. Međutim, kako bismo novopridošlicama dali osjećaj o čemu govorim, evo primjera upotrebe za Docker Compose.

Pretpostavimo da želite sami ugostiti WordPress blog na jednom poslužitelju. Postavljanje ili održavanje nije nešto što želite učiniti, ručno, pa biste umjesto toga instalirali Docker i Docker-compose na svoj VPS, stvorili jednostavnu YAML datoteku koja definira sve različite aspekte vašeg WordPress stoga, kao u nastavku, :

Napomena: Ako dolje koristite za postavljanje WordPress stranice, promijenite sve lozinke u nešto sigurno. Još bolje, koristite Docker Secrets za pohranu osjetljivih podataka poput lozinki, umjesto da ih imate u običnoj tekstualnoj datoteci.

verzija:'3'

usluge:
db:
slika: mysql:5.7
svezak:
- db_data:/gdje/lib/mysql
ponovno pokretanje: uvijek
okoliš:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress

wordpress:
ovisi o:
- db
slika: wordpress: najnovije
luke:
-'8000: 80'
ponovno pokretanje: uvijek
okoliš:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpressPassword
WORDPRESS_DB_NAME: wordpress
svezak:
db_data:{}

Nakon što je datoteka stvorena i instalirani su Docker i Docker-compose, sve što trebate učiniti je pokrenuti:

$docker-sastaviti-d

I vaša će stranica biti u funkciji. Ako postoji ažuriranje, pokrenite:

$docker-sastaviti dolje

Zatim odbacite stare Docker slike i pokrenite naredbu docker -compose up -d i nove će se slike automatski uvući. Budući da imate trajne podatke pohranjene u Docker volumenu, sadržaj vaše web stranice neće se izgubiti.

Kada koristiti Docker Swarm

Dok je Docker-compose više alat za automatizaciju, Docker Swarm je namijenjen zahtjevnijim aplikacijama. Web aplikacije sa stotinama ili tisućama korisnika ili radnim opterećenjem koje je potrebno paralelno povećavati. Tvrtke s velikom korisničkom bazom i strogim SLA zahtjevima htjele bi koristiti distribuirani sustav poput Docker Swarma. Ako vaša aplikacija radi na više poslužitelja i više podatkovnih centara, šanse zastoja zbog zahvaćene DC ili mrežne veze značajno se smanjuju.

Usprkos tome, oklijevam preporučiti Docker Swarm za slučajeve uporabe u proizvodnji jer konkurentne tehnologije poput Kubernetesa vjerojatno odgovaraju više za ovaj zadatak. Kubernetes je izvorno podržan od mnogih davatelja usluga u oblaku i radi prilično dobro s Docker kontejnerima pa ne morate čak ni obnoviti svoju aplikaciju da biste iskoristili prednosti Kubernetesa.

Zaključak

Nadam se da je ovo lutanje o Dockeru i njegovim satelitskim projektima bilo informativno i da ste pripremljeniji za docker ekosustav.