Docker Compose vs Docker Swarm

Docker Compose Vs Docker Swarm



Z revolucijo zabojnikov so aplikacije postale veliko več kot le zbirka podatkov in vmesnik. Aplikacije so razdeljene na različne mikroservise in običajno komunicirajo med seboj prek API -ja REST (običajno v obliki zapisa JSON, ki je v obliki zapisa HTTP). Docker zabojniki so idealni za tovrstno arhitekturo. Frontend 'microservice' lahko zapakirate v vsebnik Docker, zbirka podatkov gre v drugo itd. Vsaka storitev se pogovarja z drugo prek vnaprej določenega API -ja REST, namesto da bi bila monolit, napisana kot en sam kos programske opreme.

Če želite implementirati novo funkcionalnost ali funkcijo, na primer analitični mehanizem, lahko preprosto napišete novo mikro storitev za to in bo porabila podatke prek API -ja REST, ki ga razkrijejo različne mikro -storitve vaše spletne aplikacije. Ker se vaša funkcionalnost sčasoma povečuje, bo skupaj s tem rastel tudi ta seznam mikro storitev.







Nočete uvesti vsakega posameznega vsebnika, ga konfigurirati in nato konfigurirati vse ostalo, da se z njim pogovarjate. To bo postalo dolgočasno celo s tremi zabojniki. Docker-Compose vam omogoča avtomatizacijo uvajanja več vsebnikov.



Docker-Compose je eno najpreprostejših orodij, ki vam pomaga preoblikovati abstraktno idejo mikro storitev v funkcionalni niz vsebnika Docker.



Porazdeljeni sistemi

Zdaj, ko smo spletno aplikacijo razdelili v več vsebnikov, nima smisla, da jih vse hranimo na enem strežniku (še huje na enem virtualnem stroju!), Kjer pridejo v poštev storitve, kot sta Docker Swarm in Kubernetes.





Docker Swarm vam omogoča izvajanje več kopij vaše aplikacije na več strežnikih. Če je vaša mikro storitev napisana tako, da se lahko meri „vodoravno“, potem lahko uporabite Docker Swarm za razmestitev vaše spletne aplikacije v več podatkovnih centrih in več regijah. To ponuja odpornost proti okvari enega ali več podatkovnih centrov ali omrežnih povezav. Običajno se to naredi z ukazom Docker, torej Docker Stack.

The Docker Stack Podukaz se obnaša veliko bolj kot ukaz Docker-Compose, kar lahko povzroči napačne predstave za nekoga, ki uporablja katero od teh tehnologij.



Vir zmede

V smislu uporabe in poteka dela obe tehnologiji delujeta zelo podobno, kar povzroča zmedo. Način razmestitve aplikacije z Docker Swarm ali Docker-Compose je zelo podoben. Svojo aplikacijo definirate v datoteki YAML, ta datoteka bo vsebovala ime slike, konfiguracijo za vsako sliko in tudi lestvico (število ponovitev), ki jih bo morala vsaka mikro -storitev izpolnjevati pri uvajanju.

Razlika je večinoma v zaledju, kjer docker-compose razporedi vsebnik na enem samem gostitelju Docker, Docker Swarm pa ga razporedi na več vozliščih. Sproščeno povedano, še vedno lahko počne večino stvari, ki jih lahko naredi docker-compose, vendar jih razširi na več gostiteljev Docker.

Podobnosti

Tako Docker Swarm kot Docker-Compose imata naslednje podobnosti:

  1. Oba sprejemata definicije vašega sklada aplikacij, oblikovane v obliki YAML.
  2. Oba sta namenjena obravnavi aplikacij z več vsebniki (mikroservisi)
  3. Oba imata parameter merila, ki vam omogoča, da zaženete več vsebnikov z isto sliko, kar omogoča, da se vaša mikro storitev pomanjša vodoravno.
  4. Oba vzdržuje isto podjetje, tj. Docker, Inc.

Razlike

Nekaj ​​razlik med Docker Swarm in Docker-Compose:

  1. Docker Swarm se uporablja za razširjanje vaše spletne aplikacije na enega ali več strežnikov. Kjer bo Docker-compose preprosto zagnal vašo spletno aplikacijo na enem samem gostitelju Docker.
  2. Skaliranje vaše spletne aplikacije Docker Swarm ponuja resno visoko razpoložljivost in toleranco napak. Skaliranje vaše spletne aplikacije z Docker-Compose na enem samem gostitelju je uporabno samo za testiranje in razvoj.
  3. Docker Swarm in sorodni podpovedi, kot sta Docker Swarm in Docker Stack, so vgrajeni v sam Docker CLI. Vsi so del binarne datoteke Docker, ki jo kličete prek svojega terminala. Docker-Compose je samostojen binarni dokument sam po sebi.

Primer uporabe za Docker-Compose

Kot je opisano zgoraj, sta oba popolnoma različna orodja in vsak rešuje popolnoma drugačen problem, zato ni tako, da je eno drugo alternativa. Da pa novincem predstavim, o čem govorim, je tukaj primer uporabe Docker Compose.

Recimo, da želite samostojno gostiti blog WordPress na enem strežniku. Namestitev ali vzdrževanje ni nekaj, kar želite narediti ročno, zato namesto tega namestite Docker in Docker-compose na svoj VPS, ustvarite preprosto datoteko YAML, ki opredeljuje vse različne vidike vašega sklada WordPress, kot je prikazano spodaj, :

Opomba: Če za uvajanje spletnega mesta WordPress uporabljate spodaj, spremenite vsa gesla v nekaj varnega. Še bolje, uporabite Docker Secrets za shranjevanje občutljivih podatkov, kot so gesla, namesto da bi jih imeli v navadni besedilni datoteki.

različica:'3'

storitve:
db:
slika: mysql:5.7
zvezki:
- db_data:/kje/lib/mysql
ponovni zagon: vedno
okolje:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress

wordpress:
odvisno od:
- db
slika: wordpress: najnovejša
pristanišča:
-'8000: 80'
ponovni zagon: vedno
okolje:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpressPassword
WORDPRESS_DB_NAME: wordpress
zvezki:
db_data:{}

Ko je datoteka ustvarjena in sta nameščeni Docker in Docker-compose, morate zagnati vse:

$docker-compose up-d

In vaše spletno mesto bo delovalo. Če obstaja posodobitev, zaženite:

$docker-compose down

Nato zavrzite stare slike Dockerja in zaženite ukaz docker -compose up -d, nove slike pa bodo samodejno potegnjene. Ker imate trajne podatke shranjene v nosilcu Docker, vsebina vašega spletnega mesta ne bo izgubljena.

Kdaj uporabljati Docker Swarm

Medtem ko je Docker-compose bolj orodje za avtomatizacijo, je Docker Swarm namenjen zahtevnejšim aplikacijam. Spletne aplikacije z več sto ali tisoč uporabniki ali delovno obremenitvijo, ki jih je treba vzporedno povečevati. Podjetja z veliko bazo uporabnikov in strogimi zahtevami SLA bi želela uporabiti porazdeljen sistem, kot je Docker Swarm. Če se vaša aplikacija izvaja na več strežnikih in v več podatkovnih centrih, se možnosti za izpad zaradi prizadete DC ali omrežne povezave znatno zmanjšajo.

Kljub temu oklevam priporočiti Docker Swarm za primere proizvodnje, ker so konkurenčne tehnologije, kot je Kubernetes, verjetno bolj primerne za to nalogo. Kubernetes je doma podprt pri številnih ponudnikih v oblaku in deluje zelo dobro s kontejnerji Docker, tako da vam za uporabo Kubernetesa niti ni treba obnoviti aplikacije.

Zaključek

Upam, da je bilo to tepanje o Dockerju in njegovih satelitskih projektih informativno in da ste bolj pripravljeni na ekosistem dockerja.