Čo je kontajner Docker? - Kontajnerujte svoju aplikáciu pomocou Dockeru



Docker Container je odľahčené alternatívne riešenie pre Virtual Machine na vytváranie, nasadenie a spustenie aplikácií vo vnútri kontajnera.

Dúfam, že ste si moje predchádzajúce blogy prečítali Docker kde som prebral základy Dockera. Tu v tomto blogu Docker Container budem diskutovať o tom, čo sú Docker Containers a ako to funguje. Väčšinou sa zameriame na praktické prípady a prípady použitia Dockeru.

Uviedol som zoznam tém tohto blogu Docker Container:





  • Prečo potrebujeme kontajnery Docker?
  • Ako fungujú kontajnery Docker?
  • Prípady použitia kontajnera Docker

Prečo potrebujeme kontajnery Docker?

Stále si to dobre pamätám, pracoval som na projekte. V tomto projekte sme sledovali architektúru mikroslužieb. Pre tých z vás, ktorí nevedia, čo je mikroslužba, nebojte sa, predstavím vám ich.

Mikroslužby sa zakladajú na tom, že budovanie a údržba určitých typov aplikácií je ľahšia, keď sú rozdelené na menšie, skladateľné časti, ktoré spolupracujú. Každá zložka je vyvinutá osobitne a aplikácia je potom jednoducho súčtom jej základných zložiek.



Zvážte príklad uvedený nižšie:

Aplikácia na nakupovanie online - kontajner Docker - Edureka

Vo vyššie uvedenom diagrame je online obchod so samostatnými mikroslužbami pre používateľský účet, katalóg produktov, spracovanie objednávok a nákupné vozíky.



Táto architektúra má veľa výhod:

  • Aj keď niektorá z vašich mikroslužieb zlyhá, celá vaša aplikácia to neovplyvní.
  • Ľahšie sa to spravuje

Existuje aj veľa ďalších výhod, v tomto príspevku sa nebudem podrobne venovať mikroslužbám. Ale čoskoro prídem aj s pár blogmi o mikroslužbách.

V tejto architektúre sme používali CentOS Virtual Machines. Tieto virtuálne stroje sa konfigurovali písaním dlhých skriptov. Konfigurácia týchto virtuálnych počítačov nebola jediným problémom.

Vývoj takýchto aplikácií si vyžaduje spustenie niekoľkých mikroslužieb na jednom stroji. Ak teda spúšťate päť z týchto služieb, na danom stroji potrebujete päť virtuálnych počítačov. Zvážte nasledujúci diagram:

Druhý problém je dosť častý, viem, že s ním môže súvisieť veľa z vás. Aplikácia funguje v notebooku vývojára, ale nie pri testovaní ani výrobe. Môže to byť z dôvodu nedodržania konzistentného výpočtového prostredia. Zvážte nasledujúci diagram:

Okrem toho tu bolo ešte veľa ďalších problémov, ale mám pocit, že tieto problémy stačia na to, aby som vám vysvetlil potrebu kontajnerov Docker.

Zistite, ako sú kontajnery Dockeru lepšie ako virtuálne stroje

Takže si predstavte, či dávam 8 GB RAM všetkým svojim virtuálnym počítačom a na rôznych virtuálnych počítačoch mám spustených 5 mikroslužieb. V takom prípade budú tieto virtuálne počítače vyžadovať 40 GB RAM. Teraz požadujem, aby konfigurácia môjho hostiteľského počítača bola veľmi vysoká, v mojom hostiteľskom počítači by malo byť takmer 44 GB pamäte RAM. Je zrejmé, že to nie je udržateľné riešenie pre takúto architektúru, pretože tu zbytočne míňam veľa zdrojov.

Fajn, mám veľa zdrojov na vyhodenie, ale stále mám problém s nekonzistenciou v životnom cykle dodávky softvéru (SDLC). Musím tieto VM nakonfigurovať v testovacom aj prod prostredí. Niekde v tomto procese nebol na testovacom serveri aktualizovaný niektorý softvér a tím vývojárov používa aktualizovanú verziu softvéru. To vedie ku konfliktom.

Čo ak používam 100 virtuálnych počítačov, potom konfigurácia každého virtuálneho počítača zaberie veľa času a zároveň je tiež náchylná na chyby.

Poďme teraz pochopiť, čo je Docker Container a ako funguje a ako vyriešil môj problém.

Čo je kontajner Docker?

Docker je nástroj určený na uľahčenie vytvárania, nasadzovania a spúšťania aplikácií pomocou kontajnerov.

Môžete vytvoriť Docker Containers, tieto kontajnery budú obsahovať všetky binárne súbory a knižnice požadované pre vašu aplikáciu alebo mikroslužbu v mojom prípade. Vaša aplikácia je teda v kontajneri alebo ste svoju aplikáciu kontajnerizovali. Rovnaký kontajner je teraz možné použiť v prostredí Test a Prod.

Kontajnery Docker sú odľahčeným riešením pre Virtual Machines a využívajú hostiteľský OS. Najlepšie na tom je, že nemusíte vopred prideliť žiadnu RAM pamäti Docker Container, bude to trvať podľa potreby. S kontajnerom Docker sa teda nemusím obávať plytvania zdrojmi.

Poďme teraz pochopiť, ako funguje Docker Container.

Ako funguje kontajner Docker?

Nasledujúci diagram je v zásade spôsob použitia Dockeru. A predpokladám, že máte predstavu o Docker Image a Dockerfile.

Chlapci, viem, že diagram vyzerá trochu zložito, ale verte mi, že to nie je také zložité. Nasleduje vysvetlenie schémy, aj keď potom budete mať pocit, že je ťažké jej porozumieť, môžete vyjadriť svoje pochybnosti, týmto otázkam sa budem venovať čo najskôr.

  • Vývojár najskôr napíše kód projektu do súboru Docker a potom z neho vytvorí obraz.
  • Tento obrázok bude obsahovať celý kód projektu.
  • Teraz môžete spustiť tento Docker Image a vytvoriť toľko kontajnerov, koľko chcete.
  • Tento Docker Image je možné nahrať na Docker hub (je to v podstate cloudové úložisko pre vaše Docker Images, môžete ho ponechať verejný alebo súkromný).
  • Tento obrázok Dockeru v rozbočovači Docker môžu získať ďalšie tímy, napríklad QA alebo Prod.

Tým sa nielen zabráni plytvaniu prostriedkami, ale tiež sa zabezpečí, aby sa výpočtové prostredie, ktoré sa nachádza v notebooku vývojára, replikovalo aj v iných tímoch. Cítim sa teraz, nemusím vám hovoriť, prečo potrebujeme Dockera.

Bol to jeden zo spôsobov, ako to využiť, hádam musíte byť zvedaví, ako viete, ako som pomocou Dockeru vyriešil svoj problém mikroslužieb. Dovoľte mi, aby som vám dal rovnaký prehľad.

Nasleduje vysvetlenie diagramu:

  • Najskôr sme komplexné požiadavky napísali v rámci súboru Dockerfile.
  • Potom sme to natlačili na GitHub.
  • Potom sme použili server CI (Jenkins).
  • Tento server Jenkins to stiahne z Gitu a vytvorí presné prostredie. Toto sa použije na produkčných serveroch aj na testovacích serveroch.
  • Nasadili sme ho do fázových (Týka sa to nasadenia vášho softvéru na servery na účely testovania pred ich úplným nasadením do produkčného prostredia) pre testerov.
  • V zásade sme zaviedli presne to, čo sme mali, vo vývoji, testovaní a etapách do výroby.

Bude to skutočne spravodlivé povedať, Docker mi uľahčil život.

To bol príbeh mojej spoločnosti, pozrime sa na prípadovú štúdiu Indiana University. Ako Docker vyriešil ich problémy.

Prípadová štúdia univerzity v Indiane:

Indiana University je verejný univerzitný systém s viacerými kampusmi v štáte Indiana v Spojených štátoch.

Vyhlásenie o probléme

Na nasadenie aplikácií do VM používali vlastné skripty.

Ich prostredie bolo optimalizované pre ich staršie aplikácie založené na prostredí Java. Ich rastúce prostredie zahŕňa nové produkty, ktoré nie sú založené iba na jave. S cieľom poskytnúť svojim študentom čo najlepšie skúsenosti bolo potrebné, aby univerzita začala modernizovať aplikácie.

Univerzita chcela zlepšiť spôsob, akým architektujú aplikácie, prechodom na architektúru ich aplikácií založenú na mikroslužbách.

Zabezpečenie údajov študentov, ako sú SSN a údaje o zdraví študentov, bolo potrebné.

Riešenie:

Všetky problémy riešilo Docker Data Center (DDC), zvážte nasledujúcu schému:

Dôveryhodný register - Ukladá Docker Images.

Webové používateľské rozhranie UCP (Universal Control Plane) - Pomáha pri správe celého klastra z jedného miesta. Služby sú nasadené pomocou webového používateľského rozhrania UCP pomocou obrazov Docker, ktoré sú uložené v DTR (Docker Trusted Registry).

Tímy operátorov IT využívajú Universal Control Plane na zabezpečenie softvéru nainštalovaného dockerom na hostiteľoch a na nasadenie ich aplikácií bez toho, aby museli vykonať množstvo manuálnych krokov na nastavenie celej svojej infraštruktúry.

UCP a DTR sa integrujú s ich serverom LDAP, aby mohli rýchlo zabezpečiť prístup k svojim aplikáciám.

Dúfam, že ste si prečítali predchádzajúce blogy, aby ste sa naučili základy Dockeru.

Teraz vám vysvetlím, ako môžeme použiť Docker Compose pre aplikáciu s viacerými kontajnermi.

Docker Hands-On:

Predpokladám, že ste si nainštalovali Docker.V tomto príspevku budem používať program Docker Compose, nižšie som uviedol malý úvod do programu Docker Compose.

rozdiel medzi hodnotou pass by reference a pass by reference v jave

Docker Compose: Je to nástroj na definovanie a spustenie aplikácií s viacerými kontajnermi Docker. Pomocou Docker Compose môžete pomocou súboru Compose nakonfigurovať služby svojej aplikácie. Potom pomocou jediného príkazu môžete vytvoriť a spustiť všetky služby z vašej konfigurácie.

Predpokladajme, že máte viac aplikácií v rôznych kontajneroch a všetky tieto kontajnery sú navzájom prepojené. Takže nechcete vykonávať každý z týchto kontajnerov jeden po druhom. Ale chcete tieto kontajnery spustiť jediným príkazom. Tam prichádza na rad Docker Compose. S ním môžete jediným príkazom spustiť viac aplikácií v rôznych kontajneroch. tj. ukotviť - zložiť.

Príklad: Predstavte si, že máte v kontajneri YAML rôzne kontajnery, jeden prevádzkujúci webovú aplikáciu, ďalší prevádzkujúci postgres a ďalší prevádzkujúci redis. Toto sa nazýva ukotviteľný súbor, odkiaľ môžete tieto kontajnery spustiť jediným príkazom.

Zoberme si ešte jeden príklad:

Predpokladajme, že chcete publikovať blog, na ktorý budete používať CMS (Content Management System) a Wordpress je najbežnejšie používaný CMS. V zásade potrebujete jeden kontajner pre WordPress a potrebujete ešte jeden kontajner ako MySQL pre koncový server, ktorý by mal byť prepojený s kontajnerom WordPress. Potrebujeme tiež jeden ďalší kontajner pre Php Myadmin, ktorý bude prepojený s databázou MySQL, v zásade sa používa na prístup k databáze MySQL.

Čo tak vykonať uvedený príklad v praxi.

Príslušné kroky:

  1. Nainštalujte Docker Compose :
  2. Nainštalujte si WordPress: Použijeme úradníka WordPress a MariaDB Docker obrázky.
  3. Nainštalujte MariaDB: Je to jeden z najpopulárnejších databázových serverov na svete. Vyrábajú ho pôvodní vývojári MySQL. MariaDB je vyvinutý ako softvér s otvoreným zdrojom a ako relačná databáza poskytuje rozhranie SQL pre prístup k údajom.
  4. Nainštalujte si PhpMyAdmin: Jedná sa o bezplatný softvérový nástroj napísaný v PHP, určený na správu MySQL cez web.
  5. Vytvorte stránku WordPress:

Začnime!

Nainštalujte Docker Compose:

Najskôr nainštalujte Python Pip:

sudo apt-get nainštalovať python-pip

Teraz môžete nainštalovať Docker Compose:

sudo pip install docker-compose

Nainštalujte WordPress:

Vytvorte adresár wordpress:

mkdir wordpress

Zadajte tento adresár wordpress:

cd wordpress /

V tomto adresári vytvorte súbor YAML Docker Compose a potom ho upravte pomocou gedit:

sudo gedit docker-compose.yml

Vložte nasledujúce riadky kódu do tohto súboru yaml:

wordpress: obrázok: odkazy na wordpress: - wordpress_db: porty mysql: - 8080: 80 wordpress_db: obrázok: mariadb prostredie: MYSQL_ROOT_PASSWORD: edureka phpmyadmin: obrázok: corbinu / docker-phpmyadmin odkazy: - wordpress_db: porty mysql: - 8181: 80 prostredie: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Viem, že odo mňa chcete vysvetliť tento kód, takže čo urobím, urobím malé časti tohto kódu a vysvetlím vám, čo sa deje.

wordpress_db: ... prostredie: MYSQL_ROOT_PASSWORD: edureka ...

Týmto nastavíte premennú prostredia v kontajneri wordpress_db s názvom MYSQL_ROOT_PASSWORD s požadovaným heslom. Obrázok MariaDB Docker je nakonfigurovaný na kontrolu tejto premennej prostredia pri jej spustení a postará sa o nastavenie databázy DB s účtom root s heslom definovaným ako MYSQL_ROOT_PASSWORD.

wordpress: ... porty: - 8080: 80 ...

Prvé číslo portu je číslo portu na hostiteľovi a druhé číslo portu je port vo vnútri kontajnera. Táto konfigurácia teda presmeruje požiadavky na porte 8080 hostiteľa na predvolený port 80 webového servera vo vnútri kontajnera.

phpmyadmin: image: corbinu / docker-phpmyadmin links: - wordpress_db: mysql ports: - 8181: 80 environment: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Toto chytí docker-phpmyadmin členom komunity corbinu, prepojí ho s naším kontajnerom wordpress_db s názvom mysql (čo znamená, že z vnútra kontajnera phpmyadmin budú odkazy na názov hostiteľa mysql preposlané do nášho kontajnera wordpress_db), vystaví svoj port 80 na porte 8181 hostiteľský systém a nakoniec nastaví niekoľko premenných prostredia s našim používateľským menom a heslom MariaDB. Tento obrázok automaticky nezachytáva premennú prostredia MYSQL_ROOT_PASSWORD z prostredia wordpress_dbcontainer tak, ako to robí obrázok wordpress. Vlastne musíme skopírovať riadok MYSQL_ROOT_PASSWORD: edureka z kontajnera wordpress_db a nastaviť používateľské meno na root.

Teraz spustite skupinu aplikácií:

ukotviť-zložiť hore -d

To je všetko, čo musíte urobiť. Týmto spôsobom môžete pridať ľubovoľný počet kontajnerov a všetky ich prepojiť ľubovoľným spôsobom.

Teraz v prehliadači prejdite na port 8080 pomocou svojej verejnej adresy IP alebo názvu hostiteľa, ako je uvedené nižšie:

localhost: 8080

Vyplňte tento formulár a kliknite na inštalovať WordPress.

Po dokončení znova navštívte adresu IP vášho servera (tentokrát pomocou portu 8181, napr. Localhost: 8181). Privíta vás prihlasovacia obrazovka phpMyAdmin:

Pokračujte a prihláste sa pomocou koreňového mena používateľa a hesla, ktoré ste nastavili v súbore YAML, a budete môcť prehľadávať svoju databázu. Všimnete si, že server obsahuje databázu wordpress, ktorá obsahuje všetky údaje z vašej inštalácie WordPress.

Týmto končím svoj blog Docker Container. Dúfam, že sa vám tento príspevok páčil. Môžete skontrolovať iné blogy v seriáli, ktorý sa zaoberá základmi Dockera.

Ak sa vám zdá tento blog Docker Container relevantný, pozrite si stránku autor: Edureka, dôveryhodná online vzdelávacia spoločnosť so sieťou viac ako 250 000 spokojných študentov rozmiestnených po celom svete. Certifikačný vzdelávací kurz Edureka DevOps pomáha študentom získať odborné znalosti v rôznych procesoch a nástrojoch DevOps, ako sú Puppet, Jenkins, Docker, Nagios, Ansible, Chef, Saltstack a GIT na automatizáciu viacerých krokov v SDLC.

Máte na mňa otázku? Prosím, uveďte to v sekcii komentárov a ozvem sa.