Ano ang Docker Container? - I-container ang Iyong Application Gamit ang Docker

Ang Docker Container ay isang magaan na alternatibong solusyon sa Virtual Machine upang lumikha, mag-deploy at magpatakbo ng mga application sa loob ng isang lalagyan.

Kaya, inaasahan kong nabasa mo na ang aking mga nakaraang blog Pantalan kung saan ko natakpan ang mga pangunahing kaalaman sa Docker. Dito, sa blog ng Docker Container na ito tatalakayin ko ang tungkol sa kung ano ang Mga Docker Container at kung paano ito gumagana. Kadalasan, magtutuon kami sa Mga hands-on at paggamit-kaso ng Docker.

Inilista ko ang mga paksa para sa Docker Container blog na ito:





  • Bakit Kailangan Namin ang Mga lalagyan ng Docker?
  • Paano gumagana ang Docker Containers?
  • Mga Kaso ng Paggamit ng Docker Container

Bakit Kailangan Namin ang Mga lalagyan ng Docker?

Naaalala ko pa rin ito ng tama, gumagawa ako ng isang proyekto. Sa proyektong iyon sinusundan namin ang arkitektura ng microservice. Para sa iyo na hindi alam kung ano ang microservice, huwag mag-alala bibigyan kita ng isang pagpapakilala dito.

Ang ideya sa likod ng mga microservices ay ang ilang mga uri ng aplikasyon na mas madaling mabuo at mapanatili kapag pinaghiwa-hiwalay ito sa mas maliit, na nahuhugpong na mga piraso na magkakasama. Ang bawat sangkap ay binuo nang magkahiwalay, at ang aplikasyon pagkatapos ay simpleng kabuuan ng mga sangkap na bumubuo nito.



paghahagis ng doble sa isang int java

Isaalang-alang ang halimbawa sa ibaba:

Online Shopping App - Docker Container - Edureka

Sa diagram sa itaas ay may isang online shop na may magkakahiwalay na microservices para sa account ng gumagamit, katalogo ng produkto, pagproseso ng order at mga shopping cart.



Kaya, ang arkitekturang ito ay may maraming mga pakinabang:

  • Kahit na ang isa sa iyong microservice ay nabigo, ang iyong buong aplikasyon ay higit na hindi apektado.
  • Mas madaling pamahalaan ito

Maraming iba pang mga benepisyo, hindi ko na idedetalye ang tungkol sa mga microservices sa post na ito. Ngunit, sa madaling panahon ay makakakuha ako ng ilang mga blog sa microservices din.

Sa arkitekturang ito, gumagamit kami ng CentOS Virtual Machines. Ang mga Virtual Machine na iyon ay na-configure sa pamamagitan ng pagsulat ng mahabang mga script. Sa gayon, ang pag-configure ng mga VM na iyon ay hindi lamang ang problema.

Ang pagbuo ng naturang mga aplikasyon ay nangangailangan ng pagsisimula ng maraming mga microservices sa isang machine. Kaya't kung nagsisimula ka ng lima sa mga serbisyong iyon kailangan mo ng limang VM sa makina na iyon. Isaalang-alang ang diagram sa ibaba:

Ang iba pang mga problema ay medyo pangkaraniwan, alam ko na marami sa iyo ang maaaring makaugnay dito. Gumagana ang application sa laptop ng isang developer ngunit hindi sa pagsubok o paggawa. Ito ay maaaring dahil sa hindi pagpapanatili ng isang pare-parehong kapaligiran sa computing. Isaalang-alang ang diagram sa ibaba:

Maraming iba pang mga problema bukod sa ito, ngunit sa palagay ko, ang mga problemang ito ay sapat na upang maipaliwanag ko sa iyo ang pangangailangan ng Mga Docker Container.

Alamin Kung Paano Mas mahusay ang Mga Lalagyan ng Docker Kaysa sa Mga Virtual Machine

Kaya, isipin kung nagbibigay ako ng 8 GB ng RAM sa lahat ng aking mga VM, at mayroon akong 5 microservices na tumatakbo sa iba't ibang mga Virtual Machine. Sa kasong iyon, mangangailangan ang mga VM na ito ng 40 GB ng RAM. Sa gayon, kailangan ko ngayon ang mga pagsasaayos ng aking host machine upang maging napakataas, halos 44 GB ng RAM ang dapat na naroroon sa aking host machine. Malinaw na, ito ay hindi isang napapanatiling solusyon para sa gayong arkitektura dahil, nagsasayang ako ng maraming mapagkukunan dito.

Mabuti, mayroon akong maraming mapagkukunan upang sayangin, ngunit mayroon pa rin akong problema ng hindi pagkakapare-pareho sa aking paghahatid ng life-cycle (SDLC). Kailangan kong i-configure ang mga VM na ito sa pagsubok pati na rin sa kapaligiran ng prod. Sa isang lugar sa prosesong iyon, ang ilang software ay hindi na-update sa test server, at ginagamit ng pangkat ng Dev ang na-update na bersyon ng software. Ito ay humahantong sa mga salungatan.

Paano kung gumagamit ako ng 100 VMs, pagkatapos ang pag-configure ng bawat VM ay kukuha ng maraming oras, at sa parehong oras ay madaling kapitan ng error din.

Ngayon, ipaalam sa amin na maunawaan kung ano ang Docker Container at kung paano ito gumagana, at kung paano nito nalutas ang aking problema.

Ano ang isang Docker Container?

Ang Docker ay isang tool na dinisenyo upang gawing mas madali ang paglikha, pag-deploy at pagpapatakbo ng mga application sa pamamagitan ng paggamit ng mga lalagyan.

Maaari kang lumikha ng Mga lalagyan ng Docker, ang mga lalagyan na ito ay maglalaman ng lahat ng mga binary at aklatan na kinakailangan para sa iyong aplikasyon o microservice sa aking kaso. Kaya't ang iyong aplikasyon ay naroroon sa isang lalagyan, o na-containerize mo ang iyong aplikasyon. Ngayon, ang parehong lalagyan na iyon ay maaaring magamit sa kapaligiran sa Test at Prod.

Ang Docker Containers ay isang magaan na solusyon sa Mga Virtual Machine, at gumagamit ito ng host OS. Ang pinakamagandang bahagi, hindi mo kailangang paunang maglaan ng anumang RAM sa Docker Container, aabutin ito nang kinakailangan at kailan kinakailangan. Kaya, sa Docker Container hindi ako mag-alala tungkol sa pag-aaksaya ng mga mapagkukunan.

Unawain natin ngayon, kung paano gumagana ang isang Docker Container.

Paano gumagana ang isang Docker Container?

Ang diagram sa ibaba ay karaniwang, isang paraan upang magamit ang Docker. At ipinapalagay ko na, mayroon kang ideya tungkol sa Docker Image at Dockerfile.

Guys, alam ko na ang diagram ay mukhang kumplikado, ngunit tiwala sa akin na hindi ito kumplikado. Nasa ibaba ang paliwanag ng diagram, kahit na sa tingin mo ito ay matigas upang maunawaan, maaari kang magbigay ng puna sa iyong pag-aalinlangan, sasagutin ko ang mga katanungang iyon sa lalong madaling panahon.

  • Isusulat muna ng isang developer ang code ng proyekto sa isang Docker file at pagkatapos ay bumuo ng isang imahe mula sa file na iyon.
  • Maglalaman ang imaheng ito ng buong code ng proyekto.
  • Ngayon, maaari mong patakbuhin ang Docker Image na ito upang lumikha ng maraming mga lalagyan ayon sa gusto mo.
  • Ang Docker Image na ito ay maaaring mai-upload sa Docker hub (Karaniwan itong isang cloud repository para sa iyong Docker Images, mapapanatili mo itong pampubliko o pribado).
  • Ang Docker Image na ito sa Docker hub, maaaring hilahin ng iba pang mga koponan tulad ng QA o Prod.

Hindi lamang nito pinipigilan ang pag-aaksaya ng mga mapagkukunan, ngunit tinitiyak din na ang kapaligiran sa computing na naroon sa laptop ng isang Developer ay kinopya din sa ibang mga koponan. Nararamdaman ko ngayon, hindi ko kailangang sabihin sa iyo kung bakit kailangan namin ng Docker.

Ito ay isang paraan upang magamit ito, hulaan ko na dapat mausisa kayong malaman kung paano ko ginamit ang Docker upang malutas ang aking problema sa mga microservices. Hayaan mo akong bigyan ka ng isang pangkalahatang ideya sa pareho.

Nasa ibaba ang paliwanag ng diagram:

  • Una, isinulat namin ang mga kumplikadong kinakailangan sa loob ng isang Dockerfile.
  • Pagkatapos, itinulak namin ito sa GitHub.
  • Pagkatapos nito ay gumamit kami ng isang server ng CI (Jenkins).
  • Ang Jenkins server na ito ay kukuha nito pababa mula sa Git, at ang pagbuo ng eksaktong kapaligiran. Gagamitin ito sa mga server ng Production pati na rin sa mga server ng Pagsubok.
  • Na-deploy namin ito sa pagtatanghal ng dula (Tumutukoy ito sa pag-deploy ng iyong software sa mga server para sa mga layunin sa pagsubok, bago pa ma-deploy nang buo ang mga ito sa produksyon.) Mga kapaligiran para sa Mga Tester.
  • Talaga, pinagsama namin nang eksakto kung ano ang mayroon kami sa Pag-unlad, Pagsubok at Pagtatanghal sa Produksyon.

Totoong magiging makatarungang sabihin ito, Ginawang madali ng Docker ang aking buhay.

Sa gayon, iyon ang kwento ng aking kumpanya, tingnan natin ang case-study ng Indiana University. Paano nalutas ni Docker ang kanilang mga problema.

Kaso-Pag-aaral sa Unibersidad ng Indiana:

Ang Indiana University ay isang multi-campus na pampublikong unibersidad na sistema sa estado ng Indiana, Estados Unidos.

Pahayag ng Suliranin

Gumagamit sila ng mga pasadyang script upang maipalipat ang mga application sa VM.

Ang kanilang kapaligiran ay na-optimize para sa kanilang legacy na mga application na nakabatay sa Java. Ang kanilang lumalaking kapaligiran ay nagsasangkot ng mga bagong produkto na hindi lamang batay sa java. Upang maibigay sa kanilang mga mag-aaral ang pinakamagandang karanasan na kinakailangan, kailangan ng Unibersidad na simulan ang paggawa ng makabago ng mga aplikasyon.

Nais ng Unibersidad na pagbutihin ang paraan ng kanilang arkitekto ng mga aplikasyon, sa pamamagitan ng paglipat sa isang microservices batay sa arkitektura para sa kanilang mga aplikasyon.

Kailangan ng seguridad para sa data ng mag-aaral tulad ng SSN at data ng kalusugan ng mag-aaral.

Solusyon:

Ang lahat ng mga problema ay naitala ng Docker Data Center (DDC), isaalang-alang ang diagram sa ibaba:

Pinagkakatiwalaang Registry ng Docker - Iniimbak nito ang Mga Larawan ng Docker.

UCP (Universal Control Plane) Web UI - Mga tulong sa pamamahala ng buong kumpol mula sa isang solong lugar. Ang mga serbisyo ay ipinamamahagi gamit ang UCP web UI, gamit ang mga imahe ng Docker na nakaimbak sa DTR (Docker Trusted Registry).

Ang mga koponan ng IT ops ay gumagamit ng Universal Control Plane upang maibigay ang naka-install na software ng Docker sa mga host, at pagkatapos ay i-deploy ang kanilang mga application nang hindi kinakailangang gumawa ng isang bungkos ng mga manu-manong hakbang upang mai-set up ang lahat ng kanilang imprastraktura.

Ang UCP at DTR ay nagsasama sa kanilang server ng LDAP upang mabilis na makapagbigay ng pag-access sa kanilang mga application.

Inaasahan kong nabasa na ninyong lahat ang mga nakaraang blog upang malaman ang mga pangunahing kaalaman sa Docker.

Ngayon, ipapaliwanag ko sa iyo kung paano namin magagamit ang Docker Compose para sa multi lalagyan application.

Mga Docker Hands-On:

Ipinapalagay kong na-install mo ang Docker.Gagamitin ko ang Docker Compose sa post na ito, sa ibaba ay nagbigay ako ng isang maliit na pagpapakilala sa Docker Compose.

Bumuo ng Docker: Ito ay isang tool para sa pagtukoy at pagpapatakbo ng mga multi-container na aplikasyon ng Docker. Sa Docker Compose, maaari kang gumamit ng isang Compose file upang mai-configure ang mga serbisyo ng iyong application. Pagkatapos, gamit ang isang solong utos, maaari kang lumikha at magsimula ng lahat ng mga serbisyo mula sa iyong pagsasaayos.

Ipagpalagay na mayroon kang maraming mga application sa iba't ibang mga lalagyan at lahat ng mga lalagyan na iyon ay magkakaugnay na na-link. Kaya, hindi mo nais na isagawa ang bawat isa sa mga lalagyan na isa-isa. Ngunit, nais mong patakbuhin ang mga lalagyan na may isang solong utos. Doon dumating ang larawan sa Docker Compose. Sa pamamagitan nito maaari kang magpatakbo ng maraming mga application sa iba't ibang mga lalagyan na may isang solong utos. ibig sabihin docker-compose up.

Halimbawa: Isipin na mayroon kang iba't ibang mga lalagyan, isang nagpapatakbo ng isang web app, isa pang nagpapatakbo ng isang postgres at isa pang tumatakbo na muling pag-uulit, sa isang YAML file. Tinawag iyon na docker compose file, mula doon maaari mong patakbuhin ang mga lalagyan na ito sa isang solong utos.

Gumawa tayo ng isa pang halimbawa:

Ipagpalagay na nais mong mag-publish ng isang blog, para doon gagamitin mo ang CMS (Content Management System), at ang wordpress ay ang pinaka malawak na ginagamit na CMS. Talaga, kailangan mo ng isang lalagyan para sa WordPress at kailangan mo ng isa pang lalagyan bilang MySQL para sa back end, ang lalagyan na MySQL na dapat na maiugnay sa lalagyan ng WordPress. Kailangan din namin ng isa pang lalagyan para sa Php Myadmin na mai-link sa MySQL database, karaniwang, ginagamit ito upang ma-access ang MySQL database.

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

Mga kasangkot na hakbang:

  1. I-install ang Docker Compose :
  2. I-install ang WordPress: Gagamitin namin ang opisyal WordPress at MariaDB Mga imahe ng docker.
  3. I-install ang MariaDB: Ito ay isa sa pinakatanyag na mga database server sa buong mundo. Ginawa ito ng mga orihinal na developer ng MySQL. Ang MariaDB ay binuo bilang bukas na mapagkukunan ng software at bilang isang pamanggit na database nagbibigay ito ng isang SQL interface para sa pag-access ng data.
  4. I-install ang PhpMyAdmin: Ito ay isang libreng tool ng software na nakasulat sa PHP, na inilaan upang hawakan ang pangangasiwa ng MySQL sa Web.
  5. Lumikha Ang Site ng WordPress:

Magsimula na tayo!

kung paano i-install ang php sa window

I-install ang Docker Compose:

I-install muna ang Python Pip:

sudo apt-get install python-pip

Ngayon, maaari mong mai-install ang Docker Compose:

sudo pip install docker-compose

I-install ang WordPress:

Lumikha ng isang direktoryo ng wordpress:

mkdir wordpress

Ipasok ang direktoryo ng wordpress na ito:

cd wordpress /

Sa direktoryong ito lumikha ng isang Docker Compose YAML file, pagkatapos ay i-edit ito gamit ang gedit:

sudo gedit docker-compose.yml

I-paste ang mga linya sa ibaba ng code sa yaml file na iyon:

wordpress: imahe: mga link ng wordpress: - wordpress_db: MySQL ports: - 8080: 80 wordpress_db: imahe: mariadb environment: MYSQL_ROOT_PASSWORD: edureka phpmyadmin: image: corbinu / docker-phpmyadmin links: - wordpress_db: MySQL ports: - 8181: 80 environment: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Alam kong nais mong ipaliwanag ko ang code na ito, kaya kung ano ang gagawin ko, kukuha ako ng maliliit na seksyon ng code na ito at ipaliwanag sa iyo kung ano ang nangyayari.

wordpress_db: ... environment: MYSQL_ROOT_PASSWORD: edureka ...

Magtatakda ito ng isang variable ng kapaligiran sa loob ng lalagyan ng wordpress_db na tinatawag na MYSQL_ROOT_PASSWORD kasama ang iyong nais na password. Ang imahe ng MariaDB Docker ay naka-configure upang suriin para sa variable ng kapaligiran na ito kapag nagsimula ito at aalagaan ang pag-set up ng DB na may isang root account na may password na tinukoy bilang MYSQL_ROOT_PASSWORD.

wordpress: ... ports: - 8080: 80 ...

Ang unang numero ng port ay ang numero ng port sa host, at ang pangalawang numero ng port ay ang port sa loob ng lalagyan. Kaya, ang pagsasaayos na ito ay nagpapasa ng mga kahilingan sa port 8080 ng host sa default na web server port 80 sa loob ng lalagyan.

phpmyadmin: imahe: mga link ng corbinu / docker-phpmyadmin: - wordpress_db: mga port ng mysql: - 8181: 80 na kapaligiran: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Kinuha nito ang docker-phpmyadmin ng myembro ng komunidad na corbinu, na-link ito sa aming lalagyan na wordpress_db na may pangalang MySQL (ibig sabihin mula sa loob ng mga sanggunian ng lalagyan na phpmyadmin sa hostname na MySQL ay ipapasa sa aming lalagyan ng wordpress_db), inilalantad ang port na 80 nito sa port 8181 ng host system, at sa wakas ay nagtatakda ng isang pares ng mga variable ng kapaligiran sa aming MariaDB username at password. Ang imahe na ito ay hindi awtomatikong kukunin ang variable ng kapaligiran ng MYSQL_ROOT_PASSWORD mula sa kapaligiran ng wordpress_dbcontainer, ang paraan ng paggawa ng imahe ng wordpress. Talagang kailangan naming kopyahin ang MYSQL_ROOT_PASSWORD: linya ng edureka mula sa lalagyan ng wordpress_db, at itakda ang username sa root.

Simulan ngayon ang pangkat ng aplikasyon:

docker-compose up -d

Iyon lang ang dapat mong gawin. Maaari kang magdagdag ng maraming mga lalagyan hangga't gusto mo sa ganitong paraan, at maiugnay ang lahat ng ito sa anumang paraang nais mo.

Ngayon, sa browser pumunta sa port 8080, gamit ang iyong pampublikong IP o pangalan ng host, tulad ng ipinakita sa ibaba:

localhost: 8080

Punan ang form na ito at mag-click sa pag-install ng WordPress.

Kapag natapos na ito, bisitahin muli ang IP address ng iyong server (sa oras na ito gamit ang port 8181, hal. Localhost: 8181). Masalubong ka ng screen ng pag-login ng phpMyAdmin:

Sige at mag-login gamit ang root ng password at password na itinakda mo sa YAML file, at magagawa mong i-browse ang iyong database. Mapapansin mo na nagsasama ang server ng isang database ng wordpress, na naglalaman ng lahat ng data mula sa iyong pag-install ng WordPress.

Dito, tinatapos ko ang aking blog sa Docker Container. 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.

tahasang uri ng paghahagis sa java

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 250,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 makakuha ng kadalubhasaan sa iba't ibang mga proseso at tool ng DevOps tulad ng Puppet, Jenkins, Docker, Nagios, Ansible, Chef, Saltstack at GIT para sa pag-automate ng maraming mga hakbang sa SDLC.

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