Docker Networking - Galugarin Kung Paano Nakikipag-usap ang Mga Lalagyan Sa bawat Isa



Alamin ang lahat tungkol sa mga capabilite ng Docker networking na may pag-unawa sa Model ng Container Network at ipapatupad ito sa isang Kamay.

Sa mundo ngayon, ang mga negosyo ay naging masigasig sa containerization na nangangailangan ng malakas na kasanayan sa networking upang maayos na mai-configure ang isang arkitektura ng lalagyan, at sa gayon, ipinakilala nito ang konsepto ng Docker Networking.

Sa blog na ito sa Docker Networking, dadaanin mo ang mga sumusunod na paksa:



Ano ang Docker?

Upang maunawaan ang Docker, kailangan mong malaman ang tungkol sa kasaysayan kung paano na-deploy ang mga application dati at pagkatapos kung paano ipinakalat ang mga application gamit ang mga lalagyan ngayon.

Pag-deploy ng mga Aplikasyon Sa Lumang Daan At Bagong Daan - Docker Networking - Edureka



Tulad ng nakikita mo sa diagram sa itaas, ang lumang paraan ay may mga application sa host.Kaya, n bilang ng mga application ang nagbabahagi ng mga aklatan na naroroon sa operating system na iyon.Ngunit, sa paglalagay ng container, ang operating system ay magkakaroon ng isang kernel na kung saan ay ang tanging bagay na magiging pangkaraniwan sa pagitan ng lahat ng mga application.Kaya, hindi ma-access ng mga application ang mga aklatan ng bawat isa.

Kaya, Pantalan sa simpleng mga tuntunin ay isang bukas na platform para sa pagbuo, pagpapadala, at pagpapatakbo ng mga application, na nagbibigay-daan sa gumagamit na paghiwalayin ang mga application mula sa mga imprastraktura sa tulong ng mga lalagyan upang maihatid ang software nang mabilis.

Kaya, paano nakikipag-usap ang mga lalagyan sa bawat isa sa iba't ibang mga sitwasyon?



Sa gayon, dumarating iyon sa pamamagitan ng Docker Networking.

Networking ng Docker

Bago ako sumisid sa Docker Networking hayaan mo akong ipakita sa iyo ang daloy ng trabaho ng Docker.

Tulad ng nakikita mo sa diagram sa itaas. Ang isang developer ay nagsusulat ng isang code na nagtatakda ng mga kinakailangan sa aplikasyon o mga dependency sa isang madaling isulat ang Docker File at ang Docker File na ito ay gumagawa ng Mga Docker Images. Kaya, anuman ang mga dependency na kinakailangan para sa isang partikular na aplikasyon ay naroroon sa imaheng ito.

Ngayon, ang Mga Docker Container ay walang iba kundi ang runtime instance ng Docker Image. Ang mga imaheng ito ay nai-upload sa Docker Hub (Git repository para sa Docker Images) na naglalaman ng pampubliko / pribadong mga repository.

Kaya, mula sa mga pampublikong repository, maaari mo ring hilahin ang iyong imahe at maaari mong i-upload ang iyong sariling mga imahe sa Docker Hub. Pagkatapos, mula sa Docker Hub, ang iba't ibang mga koponan tulad ng Quality Assurance o Production team ay kukuha ng imaheng iyon at maghanda ng kanilang sariling mga lalagyan. Ang mga indibidwal na lalagyan na ito, nakikipag-usap sa bawat isa sa pamamagitan ng isang network upang maisagawa ang mga kinakailangang pagkilos, at ito ay walang iba kundi ang Docker Networking.

Kaya, maaari mong tukuyin ang Docker Networking bilang isang daanan sa komunikasyon kung saan ang lahat ng mga nakahiwalay na lalagyan ay nakikipag-usap sa bawat isa sa iba't ibang mga sitwasyon upang maisagawa ang kinakailangang mga pagkilos.

Ano sa palagay mo ang mga layunin ng Docker Networking?

Mga Layunin ng Docker Networking

Kakayahang umangkop - Nagbibigay ang Docker ng kakayahang umangkop sa pamamagitan ng pagpapagana ng anumang bilang ng mga application sa iba't ibang mga platform upang makipag-usap sa bawat isa.

Cross-Platform - Docker ay maaaring madaling gamitin sa cross-platform na gumagana sa iba't ibang mga server sa tulong ng Docker Swarm Clusters.

Kakayahang sukatin - Ang Docker ay isang buong ipinamamahagi na network, na nagbibigay-daan sa mga application na lumago at sukatin nang paisa-isa habang tinitiyak ang pagganap.

Desentralisado - Gumagamit ang Docker ng isang desentralisadong network, na nagbibigay-daan sa kakayahang magkaroon ng mga application na kumalat at lubos na magagamit. Kung sakaling may isang container o isang host na biglang nawawala mula sa iyong pool of resource, maaari kang magdala ng isang karagdagang mapagkukunan o makapasa sa mga serbisyong magagamit pa rin.

Gumagamit - Friendly - Ginagawang madali ng Docker na i-automate ang paglawak ng mga serbisyo, ginagawang madali itong gamitin sa pang-araw-araw na buhay.

Suporta - Nag-aalok ang Docker ng mga suportang nasa labas ng kahon. Kaya, ang kakayahang gumamit ng Docker Enterprise Edition at makuha ang lahat ng pag-andar na napakadali at prangka, ginagawang napakadaling magamit ang Docker platform.

Upang paganahin ang mga layunin sa itaas, kailangan mo ng isang bagay na kilala bilang Model ng Container Network.

Nais mo bang galugarin ang iba't ibang mga yugto ng DevOps?

Container Network Model (CNM)

Bago ko sabihin sa iyo kung ano talaga ang isang Model ng Container Network, hayaan mo akong sabihin sa iyo ang tungkol sa Libnetwork na kinakailangan bago mo maunawaan ang CNM.

Ang Libnetwork ay isang bukas na mapagkukunan ng Docker library na nagpapatupad ng lahat ng mga pangunahing konsepto na bumubuo sa CNM.

Kaya, Container Network Model (CNM) standardisahin ang mga hakbang na kinakailangan upang magbigay ng networking para sa mga lalagyan na gumagamit ng maraming mga driver ng network. Nangangailangan ang CNM ng isang naipamahaging key-value store tulad ng console upang maiimbak ang pagsasaayos ng network.

Ang CNM ay may mga interface para sa mga plugin ng IPAM at mga plugin ng network.

Ginagamit ang mga API ng plugin ng IPAM upang lumikha / magtanggal ng mga pool ng address at maglaan / makipagkalakalan ng mga lalagyan na IP address, samantalang ang mga API ng plugin ng network ay ginagamit upang lumikha / magtanggal ng mga network at magdagdag / mag-alis ng mga lalagyan mula sa mga network.

Pangunahing itinayo ang isang CNM sa 5 mga bagay: Network Controller, Driver, Network, Endpoint, at Sandbox.

Mga Bagay ng Modelong Container Network

Network Controller: Nagbibigay ng entry-point sa Libnetwork na naglalantad ng mga simpleng API para sa Docker Engine na maglaan at pamahalaan ang mga network. Dahil sinusuportahan ng Libnetwork ang maraming inbuilt at remote na driver, pinapayagan ng Network Controller ang mga gumagamit na maglakip ng isang partikular na driver sa isang naibigay na network.

Driver: Ang nagmamay-ari ng network at responsable para sa pamamahala ng network sa pamamagitan ng pagkakaroon ng maraming mga driver na lumahok upang masiyahan ang iba't ibang mga paggamit-kaso at mga sitwasyon sa paglawak.

Network: Nagbibigay ng pagkakakonekta sa pagitan ng isang pangkat ng mga endpoint na kabilang sa parehong network at ihiwalay mula sa iba pa. Kaya, tuwing ang isang network ay nilikha o na-update, aabisuhan ang kaukulang Driver tungkol sa kaganapan.

Endpoint: Nagbibigay ng pagkakakonekta para sa mga serbisyong nakalantad ng isang lalagyan sa isang network na may iba pang mga serbisyong ibinibigay ng iba pang mga lalagyan sa network. Ang isang endpoint ay kumakatawan sa isang serbisyo at hindi kinakailangang isang partikular na lalagyan, ang Endpoint ay may isang pandaigdigang saklaw sa loob ng isang kumpol din.

Sandbox: Nilikha kapag humiling ang mga gumagamit na lumikha ng isang endpoint sa isang network. Ang isang Sandbox ay maaaring magkaroon ng maraming mga endpoint na nakakabit sa iba't ibang mga network na kumakatawan sa pagsasaayos ng network ng lalagyan tulad ng IP-address, MAC-address, mga ruta, DNS.

Kaya, iyon ang 5 pangunahing mga bagay ng CNM.

Ngayon, hayaan mong sabihin ko sa iyo ang iba't ibang mga driver ng network na kasangkot sa Docker networking.

Nais Mong Kumuha ng Mga Pag-aaral ng DevOps Sa Isang Susunod na Antas?

Mga Network Driver

Higit sa lahat mayroong 5 mga driver ng network: Bridge, Host, Wala, Overlay, Macvlan

Tulay: Ang network ng tulay ay isang pribadong default na panloob na network na nilikha ng docker sa host. Kaya, ang lahat ng mga lalagyan ay nakakakuha ng isang panloob na IP address at ang mga lalagyan na ito ay maaaring ma-access ang bawat isa, gamit ang panloob na IP. Karaniwang ginagamit ang mga network ng Bridge kapag tumatakbo ang iyong mga application sa mga standalone na lalagyan na kailangang makipag-usap.

Host : Aalisin ng drayber na ito ang paghihiwalay ng network sa pagitan ng host ng docker at mga lalagyan ng docker upang magamit nang direkta ang network ng host. Kaya't sa ito, hindi mo magagawang magpatakbo ng maraming mga lalagyan ng web sa parehong host, sa parehong port tulad ng port ay karaniwan na ngayon sa lahat ng mga lalagyan sa host network.

Wala : Sa ganitong uri ng network, ang mga lalagyan ay hindi nakakabit sa anumang network at walang anumang pag-access sa panlabas na network o iba pang mga lalagyan. Kaya, ang network na ito ay ginagamit kung kailannais mong ganap na huwag paganahin ang stack ng networking sa isang lalagyan at,lumikha lamang ng isang loopback device.

Overlay : Lumilikha ng isang panloob na pribadong network na sumasaklaw sa lahat ng mga node na nakikilahok sa swarm cluster. Kaya, pinapabilis ng mga overlay network ang komunikasyon sa pagitan ng isang swarm service at isang standalone container, o sa pagitan ng dalawang standalone container sa iba't ibang Docker Daemons.

Macvlan: Pinapayagan kang magtalaga ng isang MAC address sa isang lalagyan, ginagawa itong lilitaw bilang isang pisikal na aparato sa iyong network. Pagkatapos, ruta ng Docker daemon ang trapiko sa mga lalagyan ng kanilang mga MAC address. Ang driver ng Macvlan ang pinakamahusay na pagpipilian kapag inaasahan mong direktang konektado sa pisikal na network, sa halip na ilipat sa pamamagitan ng stack ng network ng host ng Docker.

Okay, sa gayon iyon lang ang kinakailangang teorya upang maunawaan ang Docker Networking. Ngayon, hayaan mo akong magpatuloy at ipakita sa iyo nang praktikal kung paano nilikha ang mga network at ang mga lalagyan ay nakikipag-usap sa bawat isa.

Aktuwal

Kaya, sa isang palagay na lahat ng iyong naka-install na Docker sa iyong mga system, mayroon akong isang senaryo na maipakita.

Ipagpalagay na nais mong iimbak ang mga pangalan ng mga kurso at mga ID ng kurso, kung saan kakailanganin mo ang isang web application. Talaga, kailangan mo ng isang lalagyan para sa web application at kailangan mo ng isa pang lalagyan bilang MySQL para sa backend, ang lalagyan na MySQL na dapat na maiugnay sa lalagyan ng web application.

Paano ang tungkol sa pagpapatupad kong halimbawa ng nabanggit sa itaas nang praktikal.

Mga kasangkot na hakbang:

  • Simulan ang Docker Swarm upang bumuo ng isang Swarm cluster.
  • Lumikha ng isang Overlay Network
  • Lumikha ng mga serbisyo para sa parehong web application at MySQL
  • Ikonekta ang mga application sa pamamagitan ng network

Magsimula na tayo!

Hakbang 1: Simulan ang Docker Swarm sa makina.

docker swarm init --advertise-addr 192.168.56.101

Ang flag ng –advertise-addr ay nag-configure ng manager node upang mai-publish ang address nito bilang 192.168.56.101. Ang iba pang mga node sa kulub ay dapat na ma-access ang manager sa IP address.

Hakbang 2: Ngayon, kung nais mong sumali sa manager node na ito sa node ng manggagawa, kopyahin ang link na nakukuha mo kapag pinasimulan mo ang pagdikit sa node ng manggagawa.
Hakbang 3: Lumikha ng isang overlay network.

docker network lumikha ng -d overlay myoverlaynetwork

Kung saan ang myoverlay ay ang pangalan ng network at -d nagbibigay-daan sa Docker Daemon na tumakbo sa background.

Hakbang 4.1: Lumikha ng isang webapp1 ng serbisyo at gamitin ang network na iyong nilikha upang maipadala ang serbisyong ito sa swarm cluster.

lumikha ng serbisyo ng docker --name webapp1 -d --network myoverlaynetwork -p 8001: 80 hshar / webapp

Kung saan -pay para sa pagpapasa ng port,hsharang pangalan ng account sa Docker Hub, at ang webapp ay ang pangalan ng web application na mayroon na sa Docker Hub.

Hakbang 4.2: Ngayon, suriin kung ang serbisyo ay nilikha o hindi.

serbisyo ng docker ls

Hakbang 5.1: Ngayon, lumikha ng isang serbisyo MySQL at gamitin ang network na iyong nilikha upang maipadala ang serbisyo sa swarm cluster.

lumikha ng serbisyo ng docker --pangalan ng mysql -d --network myoverlaynetwork -p 3306: 3306 hshar / MySQL: 5.5


Hakbang 5.2: Ngayon, suriin kung ang serbisyo ay nilikha o hindi.

serbisyo ng docker ls

Hakbang 6.1: Pagkatapos nito, suriin kung aling lalagyan ang tumatakbo sa iyong master node at pumunta sa lalagyan ng hshar / webapp.

docker ps

Hakbang 6.2: Kaya, makikita mo na ang serbisyo lamang ng webapp ang nasa node ng manager. Kaya, pumasok sa lalagyan ng webapp.

docker exec -ito ang container_id bash nano var / www / html / index.php

Ang utos ng docker ps ay maglilista ng pareho ang iyong mga lalagyan sa kani-kanilang container id. Paganahin ng pangalawang utos ang lalagyan na iyon sa isang interactive mode.

Hakbang 7: Ngayon, palitan ang $ servername mula sa localhost sa MySQL at $ password mula sa '' 'patungong' edureka ', at palitan din ang lahat ng pagpunan ng mga detalye sa database na kinakailangan at i-save ang iyong index.php file sa pamamagitan ng paggamit ng keyboard shortcut Ctrl + x at pagkatapos nito y upang makatipid, at pindutin ang enter.

Hakbang 8: Ngayon, pumunta sa container ng MySQL na tumatakbo sa isa pang node.

docker exec -ito ang container_id bash

Hakbang 9: Kapag napunta ka sa loob ng container ng MySQL, ipasok ang mga utos sa ibaba upang magamit ang database sa MySQL.

Hakbang 9.1: Kumuha ng isang access upang magamit ang container ng MySQL.

MySQL -u root -pedureka

Kung saan kinakatawan ng -u ang gumagamit at -p ang password ng iyong machine.

Hakbang 9.2: Lumikha ng isang database sa MySQL na gagamitin upang makakuha ng data mula sa webapp1.

GUMAWA NG DATABASE Mga Kamay

Hakbang 9.3: Gamitin ang nilikha na database.

bakit kailangan natin ng serialization sa java
USE HandsOn

Hakbang 9.4: Lumikha ng isang talahanayan sa database na ito na gagamitin upang makakuha ng data mula sa webapp1.

GUMAWA NG TABLE course_details (course_name VARCHAR (10), course_id VARCHAR (11))

Hakbang 9.5: Ngayon, lumabas sa MySQL at lalagyan din gamit ang utos labasan .

Hakbang 10: Pumunta sa iyong browser at ipasok ang address bilang localhost: 8001 / index.php . Bubuksan nito ang iyong web application. Ngayon, ipasok ang mga detalye ng mga kurso at mag-click sa Ipasa ang tanong .

Hakbang 11: Kapag na-click mo ang Isumite ang Query, pumunta sa node kung saan tumatakbo ang iyong serbisyo ng MySQL at pagkatapos ay pumunta sa loob ng lalagyan.

docker exec -it container_id bash MySQL -u root -pedureka GAMITIN ang Mga Kamay Sa Ipakita ang mga talahanayan piliin ang * mula sa course_details

Ipapakita nito sa iyo ang output ng lahat ng mga kurso, kung saan mo napunan ang mga detalye.

Dito, tinatapos ko ang aking blog sa Docker Networking. Sana nasiyahan ka sa post na ito. Maaari mong suriin iba pang mga blog sa serye din, na pakikitungo sa mga pangunahing kaalaman ng Docker.

Kung nalaman mong nauugnay ang blog na Docker Container na ito, tingnan ang ni Edureka, isang pinagkakatiwalaang kumpanya sa pag-aaral sa online na may isang network na higit sa 450,000 nasiyahan na mga nag-aaral na kumalat sa buong mundo. Ang kurso sa Pagsasanay sa Certification ng Edureka DevOps ay tumutulong sa mga nag-aaral na magkaroon ng kadalubhasaan sa iba't ibang mga proseso at tool ng DevOps tulad ng Puppet, Jenkins, Docker, Nagios, Ansible, at GIT para sa pag-automate ng maraming mga hakbang sa SDLC.

Naghahanap ng Sertipikasyon sa DevOps?

May tanong ba sa akin? Mangyaring banggitin ito sa seksyon ng mga puna at babalik ako sa iyo.