Docker Compose vs Docker Swarm

Docker Compose Vs Docker Swarm



Gamit ang lalagyan na 'rebolusyon' na mga app ay lumago nang higit pa sa pagiging isang database at isang frontend lamang. Ang mga aplikasyon ay nahahati sa iba't ibang mga microservices at karaniwang nakikipag-usap sila sa isa't isa sa pamamagitan ng isang REST API (karaniwang naka-format na mga payload na JSON sa paglipas ng HTTP). Ang mga lalagyan ng docker ay perpekto para sa ganitong uri ng arkitektura. Maaari mong i-package ang iyong frontend na 'microservice' sa isang lalagyan ng Docker, ang database ay papunta sa isa pa, at iba pa at iba pa. Ang bawat serbisyo ay nakikipag-usap sa isa pa sa isang paunang natukoy na REST API sa halip na isang monolith na nakasulat bilang isang solong piraso ng software.

Kung kailangan mong magpatupad ng isang bagong pag-andar o isang tampok, hal, isang analytics engine, maaari ka lamang sumulat ng isang bagong microservice para doon at gugugol nito ang data sa pamamagitan ng REST API na nakalantad ng iba't ibang microservices ng iyong web app. At habang lumalaki ang iyong pag-andar sa paglipas ng panahon, ang listahan ng mga microservices na ito ay lalago kasama din nito.







Hindi mo nais na i-deploy ang bawat indibidwal na lalagyan, i-configure ito at pagkatapos ay i-configure ang lahat upang pag-usapan din ito. Makakapagod iyon kahit sa tatlong lalagyan. Hinahayaan ka ng Docker-Compose na i-automate ang pag-deploy ng maraming mga lalagyan.



Ang Docker-Compose ay isa sa pinakasimpleng tool na makakatulong sa iyong ibahin ang abstract na ideya ng microservices sa isang functional na hanay ng lalagyan ng Docker.



Ipinamahagi na Sistema

Ngayon na pinaghiwalay namin ang web app sa maraming mga lalagyan, walang katuturan na panatilihin silang lahat sa isang solong server (mas masahol pa sa isang solong virtual machine!) Doon nagsimula ang mga serbisyo tulad ng Docker Swarm at Kubernetes.





Pinapayagan ka ng Docker Swarm na magpatakbo ng maraming mga replika ng iyong application sa maraming mga server. Kung ang iyong microservice ay nakasulat sa isang paraan na maaari nitong sukatin ang 'pahalang' pagkatapos ay maaari mong gamitin ang Docker Swarm upang i-deploy ang iyong web app sa maraming data center at maraming mga rehiyon. Nag-aalok ito ng katatagan laban sa pagkabigo ng isa o higit pang mga sentro ng data o mga link sa network. Karaniwan itong ginagawa gamit ang isang subcommand sa Docker, iyon ay, Docker Stack.

Ang Docker Stack ang subcommand ay kumilos nang higit pa tulad ng utos ng Docker-Compose at maaaring humantong sa mga maling kuru-kuro sa isang tao na gumagamit ng alinman sa mga teknolohiya.



Pinagmulan ng pagkalito

Sa mga tuntunin ng paggamit at daloy ng trabaho, parehong gumagana ang mga teknolohiya na magkatulad sa bawat isa, at nagsasanhi ito ng pagkalito. Ang paraan ng iyong pag-deploy ng iyong app gamit ang alinman sa Docker Swarm o Docker-Compose ay halos magkatulad. Tinukoy mo ang iyong aplikasyon sa isang YAML file, ang file na ito ay maglalaman ng pangalan ng imahe, ang pagsasaayos para sa bawat imahe at pati na rin ang sukat (bilang ng mga replika) na ang bawat microservice ay kinakailangan upang matugunan sa pag-deploy.

Ang pagkakaiba ay nakasalalay sa likas na likuran, kung saan ang docker-compose ay naglalagay ng lalagyan sa isang solong host ng Docker, ang Docker Swarm ay naglalagay nito sa maraming mga node. Maluwag na nagsasalita, maaari pa rin itong gumawa ng karamihan sa mga bagay na maaari ng docker-compose ngunit sinusukat ito sa maraming host ng Docker.

Pagkakatulad

Ang parehong Docker Swarm at Docker-Compose ay may mga sumusunod na pagkakatulad:

  1. Pareho silang kumukuha ng mga kahulugan ng format na YAML ng iyong stack ng application.
  2. Pareho silang nilalayon upang makitungo sa mga application na maraming lalagyan (microservices)
  3. Pareho silang may isang sukatan na parameter na nagbibigay-daan sa iyo upang magpatakbo ng maraming mga lalagyan ng parehong imahe na nagpapahintulot sa iyong microservice na sukatin nang pahalang.
  4. Parehas silang pinananatili ng parehong kumpanya, ibig sabihin, Docker, Inc.

Pagkakaiba-iba

Ang ilang mga pagkakaiba sa pagitan ng Docker Swarm at Docker-Compose:

  1. Ginagamit ang Docker Swarm upang sukatin ang iyong web app sa isa o higit pang mga server. Kung saan bilang Docker-compose ay tatakbo lamang ang iyong web app sa isang solong host ng Docker.
  2. Ang pag-scale ng iyong web app na Docker Swarm ay nag-aalok ng seryosong mataas na kakayahang magamit at pagpapaubaya sa kasalanan. Ang pag-scale ng iyong web app gamit ang Docker-Compose sa isang solong host ay kapaki-pakinabang lamang para sa pagsubok at pag-unlad.
  3. Ang Docker Swarm at mga kaugnay na subcommand tulad ng Docker Swarm at Docker Stack ay itinayo sa Docker CLI mismo. Lahat sila ay bahagi ng Docker binary na tinatawag mo sa pamamagitan ng iyong terminal. Ang Docker-Compose ay standalone binary sa at ng sarili nito.

Isang Kaso sa Paggamit para sa Docker-Compose

Tulad ng inilarawan sa itaas, pareho silang ganap na magkakaibang mga tool at nalulutas ng bawat isa ang isang ganap na magkakaibang problema kaya't hindi tulad ng isa ay isang kahalili para sa iba pa. Gayunpaman, upang mabigyan ng bagong kahulugan ang pinag-uusapan ko, narito ang isang kaso ng paggamit para sa Docker Compose.

Ipagpalagay na nais mong i-host ang sarili ng isang WordPress Blog sa isang solong server. Ang pagse-set up o pagpapanatili nito hindi isang bagay na nais mong gawin, nang manu-mano, kaya ang gagawin mo sa halip ay i-install ang Docker at Docker-compose sa iyong VPS, lumikha ng isang simpleng YAML file na tumutukoy sa lahat ng iba't ibang mga aspeto ng iyong WordPress stack, tulad ng sa ibaba, :

Tandaan: Kung gumagamit ka ng nasa ibaba upang mag-deploy ng isang WordPress site, mangyaring baguhin ang lahat ng mga password sa isang bagay na ligtas. Mas mabuti pa, gumamit ng Mga Lihim ng Docker upang mag-imbak ng sensitibong data tulad ng mga password, sa halip na magkaroon ito sa isang simpleng file ng teksto.

bersyon:'3'

mga serbisyo:
db:
imahe: MySQL:5.7
dami:
- db_data:/kung saan/lib/MySQL
restart: lagi
kapaligiran:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress

wordpress:
depende sa:
- db
imahe: wordpress: pinakabagong
port:
-'8000: 80'
restart: lagi
kapaligiran:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpressPassword
WORDPRESS_DB_NAME: wordpress
dami:
db_data:{}

Sa sandaling nalikha ang file at naka-install ang parehong Docker at Docker-compose, ang kailangan mo lang ay tumakbo:

$docker-compose up-d

At tatakbo at tumatakbo ang iyong site. Kung mayroong isang pag-update, pagkatapos ay patakbuhin ang:

$docker-compose pababa

Pagkatapos itapon ang lumang mga imahe ng Docker at patakbuhin ang docker-compose up -d na utos at mga bagong imahe ay awtomatikong mahihila. Dahil mayroon kang paulit-ulit na data na nakaimbak sa isang Docker Volume, hindi mawawala ang nilalaman ng iyong website.

Kailan gagamitin ang Docker Swarm

Habang ang Docker-compose ay higit pa sa isang tool sa pag-aautomat, ang Docker Swarm ay inilaan para sa mas hinihingi na mga application. Ang mga web app na may daan-daan o libu-libong mga gumagamit o workload na kailangang i-scale na magkasama. Ang mga kumpanya na may malaking batayan ng gumagamit at mahigpit na mga kinakailangan sa SLA ay nais na gumamit ng isang ipinamamahaging sistema tulad ng Docker Swarm. Kung ang iyong app ay tumatakbo sa maraming mga server at maraming mga data center kung gayon ang mga pagkakataon ng downtime dahil sa isang apektadong DC o link ng network ay nabawasan nang malaki.

Sinabi nito, nag-aalangan akong irekomenda ang Docker Swarm para sa mga kaso ng paggamit sa produksyon dahil ang mga nakikipagkumpitensyang teknolohiya tulad ng Kubernetes ay masasabing mas angkop para sa gawaing ito. Sinusuportahan ang Kubernetes nang natural sa maraming mga cloud provider at gumagana ito ng maayos sa Docker Containers upang hindi mo na muling itayo ang iyong app upang samantalahin ang Kubernetes.

Konklusyon

Inaasahan ko na ang rambling sa Docker at mga proyekto sa satellite na ito ay naging kaalaman at mas handa ka para sa ekosistema ng pantalan.