Lučki radnik

Docker Compose vs Docker Swarm

Docker Compose vs Docker Swarm

Web aplikacije i mikroservisi

S kontejnerskom 'revolucijom' aplikacije porasle su mnogo više od toga da budu samo baza podataka i sučelje. Aplikacije su podijeljene u različite mikroservise i obično međusobno komuniciraju putem REST API-ja (obično JSON formatirani tereti preko HTTP-a). Docker spremnici idealni su za ovu vrstu arhitekture. Svoje prednje 'mikroservise' možete spakirati u Docker spremnik, baza podataka ide u drugu, i tako dalje i tako dalje. Svaka usluga razgovara s drugom preko unaprijed definiranog REST API-ja, umjesto da bude monolit napisan kao jedan dio softvera.

Ako trebate implementirati novu funkcionalnost ili značajku, npr.g, analitički mehanizam, za to možete jednostavno napisati novu mikrouslugu i ona će trošiti podatke putem REST API-ja izloženog raznim mikroservisima vaše web aplikacije. A kako vaša funkcionalnost vremenom raste, tako će i ovaj popis mikrousluga rasti zajedno s njim.

Ne želite rasporediti svaki pojedinačni spremnik, konfigurirati ga, a zatim konfigurirati sve ostalo da biste s njim također razgovarali. To će postati dosadno s čak tri spremnika. Docker-Compose omogućuje vam automatizaciju postavljanja više spremnika.

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

Distribuirani sustavi

Sad kad smo web aplikaciju podijelili u više spremnika, nema smisla držati ih sve na jednom poslužitelju (još gore na jednom virtualnom stroju!) tu nastupaju 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 mikroservisa napisana na način da se može skalirati 'vodoravno', tada možete koristiti Docker Swarm za postavljanje svoje web aplikacije u više podatkovnih centara i više regija. Ovo nudi otpornost na neuspjeh jednog ili više podatkovnih centara ili mrežnih veza. To se obično radi pomoću podnaredbe u Dockeru, odnosno Docker Stacku.

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

Izvor zabune

Što se tiče upotrebe i tijeka rada, obje tehnologije djeluju vrlo slično, što uzrokuje zabunu. Način na koji instalirate aplikaciju pomoću Docker Swarma ili Docker-Compose vrlo je sličan. Svoju aplikaciju definirate u YAML datoteci, ova datoteka sadržavat će ime slike, konfiguraciju svake slike, kao i mjerilo (broj replika) koje će svaka mikro usluga morati ispuniti u implementaciji.

Razlika je uglavnom u pozadini, gdje docker-compose raspoređuje spremnik na jednom Docker hostu, Docker Swarm ga raspoređuje na više čvorova. Labavo govoreći, još uvijek može raditi većinu stvari koje docker-compose može, ali to skalira na više Dockerovih hostova.

Sličnosti

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

  1. Oboje uzimaju YAML formatirane definicije vašeg stoga aplikacija.
  2. Oboje su namijenjeni rješavanju aplikacija s više spremnika (mikrousluga)
  3. Oboje imaju parametar razmjera koji vam omogućuje pokretanje više spremnika iste slike omogućavajući vašoj mikroservisu vodoravno skaliranje.
  4. Oboje ih održava ista tvrtka, t.j.e, 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 pokretati vašu web aplikaciju na jednom Dockerovom hostu.
  2. Skaliranje vaše web aplikacije Docker Swarm nudi ozbiljnu visoku dostupnost i otpornost na kvarove. Skaliranje web-aplikacije pomoću programa Docker-Compose na jednom hostu korisno je samo za testiranje i razvoj.
  3. Docker Swarm i srodne podnaredbe poput Docker Swarm i Docker Stack ugrađeni su u sam Docker CLI. Svi su oni dio Dockerove binarne datoteke koju zovete putem terminala. Docker-Compose samostalno je binarno rješenje.

Slučaj upotrebe za Docker-Compose

Kao što je gore opisano, obojica su potpuno različiti alati i svaki rješava potpuno drugačiji problem, tako da nije kao da je jedan alternativa drugom. Međutim, kako biste novim posjetiteljima dali dojam o čemu govorim, evo primjera za Docker Compose.

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

Napomena: Ako koristite dolje 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.

inačica: '3'
 
usluge:
db:
slika: mysql: 5.7
svezaka:
- db_data: / var / 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
svezaka:
db_data:

Jednom kada se datoteka stvori i instaliraju i Docker i Docker-compose, sve što morate učiniti je pokrenuti:

$ docker-compose up -d

I vaše će mjesto biti pokrenuto. Ako postoji ažuriranje, pokrenite:

$ docker-sastavi dolje

Zatim bacite stare Dockerove slike i pokrenite naredbu docker-compose up -d i nove će se slike automatski povući. Budući da imate trajne podatke pohranjene u Docker Volume, sadržaj vašeg web mjesta neće biti izgubljen.

Kada koristiti Docker Swarm

Iako je Docker-compose više alat za automatizaciju, Docker Swarm namijenjen je zahtjevnijim aplikacijama. Web aplikacije sa stotinama ili tisućama korisnika ili radnim opterećenjem koje treba paralelno skalirati. Tvrtke s velikom bazom korisnika i strogim zahtjevima za SLA htjele bi koristiti distribuirani sustav poput Docker Swarma. Ako se vaša aplikacija izvodi na više poslužitelja i više podatkovnih centara, šanse za zastoj zbog pogođenog istosmjernog ili mrežnog linka znatno se smanjuju.

Uprkos tome, oklijevam preporučiti Docker Swarm za slučajeve proizvodne upotrebe, jer konkurentske tehnologije poput Kubernetesa vjerojatno odgovaraju ovom zadatku. Kubernetes je izvorno podržan od strane mnogih pružatelja usluga u oblaku i prilično dobro funkcionira s Docker spremnicima, tako da čak ne morate ponovno izrađivati ​​svoju aplikaciju da biste iskoristili prednosti Kubernetesa.

Zaključak

Nadam se da je ovo lutanje Dockerom i njegovim satelitskim projektima bilo informativno i da ste spremniji za ekosustav dockera.

Luke komercijalnih igara s otvorenim kodom
Besplatne igre s otvorenim kodom i više platformi mogu se koristiti za igranje starih, kao i nekih prilično nedavnih naslova igara. U ovom će se člank...
Najbolje igre naredbenog retka za Linux
Naredbeni redak nije samo vaš najveći saveznik pri korištenju Linuxa - on također može biti izvor zabave jer ga možete koristiti za igranje mnogih zab...
Najbolje aplikacije za mapiranje gamepada za Linux
Ako volite igrati igre na Linuxu s gamepadom umjesto tipičnim sustavom za unos tipkovnice i miša, za vas postoji nekoliko korisnih aplikacija. Mnoge r...