Co je Docker Container? - Kontejnerujte svou aplikaci pomocí Dockeru



Docker Container je odlehčené alternativní řešení pro Virtual Machine k vytváření, nasazování a spouštění aplikací uvnitř kontejneru.

Doufám, že jste si přečetli mé předchozí blogy Přístavní dělník kde jsem popsal základy Dockeru. Tady v tomto blogu Docker Container budu diskutovat o tom, co jsou Docker Containers a jak to funguje. Většinou se zaměříme na praktické příklady a případy použití Dockeru.

Uvedl jsem seznam témat tohoto blogu Docker Container:





  • Proč potřebujeme kontejnery Docker?
  • Jak fungují kontejnery Docker?
  • Případy použití kontejneru Docker

Proč potřebujeme kontejnery Docker?

Stále si to dobře pamatuji, pracoval jsem na projektu. V tomto projektu jsme sledovali architekturu mikroslužeb. Pro ty z vás, kteří nevědí, co je mikroslužba, nebojte se, představím vám je.

Myšlenkou mikroslužeb je, že některé typy aplikací se snadněji vytvářejí a udržují, když jsou rozděleny na menší skládatelné části, které fungují společně. Každá komponenta je vyvíjena samostatně a aplikace je pak jednoduše součtem jejích složek.



Zvažte následující příklad:

Online nakupování - Docker Container - Edureka

Ve výše uvedeném diagramu je online obchod se samostatnými mikroslužbami pro uživatelský účet, katalog produktů, zpracování objednávek a nákupní vozíky.



Tato architektura má spoustu výhod:

  • I když některá z vašich mikroslužeb selže, celá vaše aplikace je z velké části nedotčena.
  • Je to jednodušší spravovat

Existuje také mnoho dalších výhod, nebudu se v tomto příspěvku podrobně zabývat mikroslužbami. Ale brzy přijdu také s několika blogy o mikroslužbách.

V této architektuře jsme používali CentOS Virtual Machines. Tyto virtuální stroje byly konfigurovány psaním dlouhých skriptů. Konfigurace těchto virtuálních počítačů nebyl jediný problém.

Vývoj takových aplikací vyžaduje spuštění několika mikroslužeb na jednom stroji. Takže pokud začínáte pět z těchto služeb, potřebujete na tomto počítači pět virtuálních počítačů. Zvažte následující diagram:

Druhý problém je docela běžný, vím, že se ho hodně týká. Aplikace funguje v notebooku vývojáře, ale ne při testování nebo produkci. Důvodem může být nedodržení konzistentního výpočetního prostředí. Zvažte následující diagram:

Kromě toho existovalo ještě mnoho dalších problémů, ale mám pocit, že tyto problémy jsou dost na to, abych vám vysvětlil potřebu kontejnerů Docker.

Zjistěte, jak jsou kontejnery Dockeru lepší než virtuální stroje

Představte si tedy, že dávám 8 GB RAM všem svým virtuálním počítačům a mám 5 mikroslužeb spuštěných na různých virtuálních počítačích. V takovém případě budou tyto virtuální počítače vyžadovat 40 GB RAM. Teď vyžaduji, aby konfigurace mého hostitelského počítače byla velmi vysoká, v mém hostitelském počítači by mělo být téměř 44 GB RAM. Je zřejmé, že se nejedná o udržitelné řešení pro takovou architekturu, protože zde plýtvám spoustou zdrojů.

Dobře, mám spoustu zdrojů na plýtvání, ale stále mám problém s nekonzistencí v mém životním cyklu dodávky softwaru (SDLC). Musím tyto virtuální počítače nakonfigurovat v testovacím i prod prostředí. Někde v tomto procesu nebyl na testovacím serveru aktualizován nějaký software a tým vývojářů používá aktualizovanou verzi softwaru. To vede ke konfliktům.

Co když používám 100 virtuálních počítačů, pak konfigurace každého virtuálního počítače zabere spoustu času a zároveň je také náchylná k chybám.

Nyní pochopme, co je Docker Container a jak funguje a jak vyřešil můj problém.

Co je kontejner Docker?

Docker je nástroj navržený tak, aby usnadňoval vytváření, nasazování a spouštění aplikací pomocí kontejnerů.

Můžete vytvořit Docker Containers, tyto kontejnery budou v mém případě obsahovat všechny binární soubory a knihovny potřebné pro vaši aplikaci nebo mikroslužbu. Takže vaše aplikace je přítomna v kontejneru, nebo jste svou aplikaci kontejnerizovali. Nyní lze stejný kontejner použít v prostředí Test a Prod.

Kontejnery Docker jsou odlehčeným řešením pro Virtual Machines a používají hostitelský operační systém. Nejlepší na tom je, že nemusíte předem přidělit žádnou RAM do kontejneru Docker, bude to trvat podle potřeby. S Docker Container se tedy nemusím obávat plýtvání zdroji.

Pojďme nyní pochopit, jak kontejner Docker funguje.

Jak kontejner Docker funguje?

Níže uvedený diagram je v zásadě způsob, jak používat Docker. A předpokládám, že máte představu o Docker Image a Dockerfile.

Lidi, vím, že diagram vypadá trochu komplexně, ale věřte mi, že to není tak složité. Níže je vysvětlení diagramu, i když máte pocit, že je těžké mu porozumět, můžete vyjádřit své pochybnosti, budu se těmto otázkám věnovat co nejdříve.

  • Vývojář nejprve zapíše kód projektu do souboru Docker a poté z něj vytvoří obrázek.
  • Tento obrázek bude obsahovat celý kód projektu.
  • Nyní můžete spustit tento Docker Image a vytvořit tolik kontejnerů, kolik chcete.
  • Tento obrázek Dockeru lze nahrát na centrum Dockeru (je to v podstatě cloudové úložiště pro vaše obrázky Dockeru, můžete jej ponechat veřejné nebo soukromé).
  • Tento obrázek Dockeru v centru Dockeru lze vytáhnout jinými týmy, jako je QA nebo Prod.

To nejen zabraňuje plýtvání zdroji, ale také zajišťuje, že výpočetní prostředí, které je v notebooku vývojáře, je replikováno také v jiných týmech. Cítím se teď, nemusím vám říkat, proč potřebujeme Dockera.

To byl jeden způsob, jak to použít, hádám, že musíte být zvědaví, jak víte, jak jsem pomocí Dockeru vyřešil můj problém mikroslužeb. Dovolte mi, abych vám poskytl přehled o tom samém.

Níže je vysvětlení diagramu:

  • Nejprve jsme napsali komplexní požadavky v Dockerfile.
  • Poté jsme to tlačili na GitHub.
  • Poté jsme použili server CI (Jenkins).
  • Tento server Jenkins to stáhne z Gitu a vytvoří přesné prostředí. To bude použito na produkčních serverech i na testovacích serverech.
  • Nasadili jsme to do přípravných (Jedná se o nasazení vašeho softwaru na servery pro účely testování, před jejich úplným nasazením do produkce.) Prostředí pro testery.
  • V podstatě jsme zavedli přesně to, co jsme měli ve vývoji, testování a fázování do výroby.

Bude to vlastně fér, když to řeknu, Docker mi usnadnil život.

To byl příběh mé společnosti, podívejme se na případovou studii Indiana University. Jak Docker vyřešil jejich problémy.

Případová studie univerzity v Indianě:

Indiana University je veřejný univerzitní systém s více areály ve státě Indiana ve Spojených státech.

Problémové prohlášení

K nasazení aplikací ve virtuálním počítači používali vlastní skripty.

Jejich prostředí bylo optimalizováno pro jejich starší aplikace založené na prostředí Java. Jejich rostoucí prostředí zahrnuje nové produkty, které nejsou založeny pouze na javě. Aby mohli studenti svým studentům poskytnout co nejlepší zážitek, potřebovali zahájit modernizaci aplikací.

Univerzita chtěla zlepšit způsob, jakým architekturují aplikace, přechodem na architekturu založenou na mikroslužbách pro jejich aplikace.

Pro údaje studentů, jako jsou SSN a údaje o zdraví studentů, bylo zapotřebí zabezpečení.

Řešení:

Všechny problémy řešilo Docker Data Center (DDC), zvažte následující diagram:

Důvěryhodný registr Docker - Ukládá Docker Images.

Webové uživatelské rozhraní UCP (Universal Control Plane) - Pomáhá při správě celého klastru z jednoho místa. Služby jsou nasazeny pomocí webového uživatelského rozhraní UCP pomocí obrazů Docker, které jsou uloženy v DTR (Docker Trusted Registry).

Týmy IT ops využívají Universal Control Plane k zajišťování softwaru nainstalovaného Dockerem na hostitelích a poté nasazují své aplikace, aniž by museli provádět celou řadu ručních kroků k nastavení celé své infrastruktury.

UCP a DTR se integrují s jejich serverem LDAP a rychle poskytují přístup k jejich aplikacím.

Doufám, že jste si přečetli předchozí blogy, abyste se naučili základy Dockeru.

Nyní vám vysvětlím, jak můžeme použít Docker Compose pro aplikaci s více kontejnery.

Docker Hands-On:

Předpokládám, že jste nainstalovali Docker.V tomto příspěvku budu používat Docker Compose, níže jsem uvedl malý úvod do Docker Compose.

rozdíl mezi hodnotou pass by pass a reference v java

Docker Compose: Jedná se o nástroj pro definování a spouštění aplikací Docker s více kontejnery. S Docker Compose můžete použít soubor Compose ke konfiguraci služeb vaší aplikace. Potom pomocí jediného příkazu můžete vytvořit a spustit všechny služby z vaší konfigurace.

Předpokládejme, že máte více aplikací v různých kontejnerech a všechny tyto kontejnery jsou vzájemně propojeny. Takže nechcete provádět každý z těchto kontejnerů jeden po druhém. Ale chcete tyto kontejnery spustit jediným příkazem. To je místo, kde do obrazu přichází Docker Compose. S ním můžete jediným příkazem spustit více aplikací v různých kontejnerech. tj. docker-compose up.

Příklad: Představte si, že máte v kontejneru YAML různé kontejnery, jeden se spuštěnou webovou aplikací, druhý se spuštěným postgresem a další se spuštěným redisem. Tomu se říká docker compose file, odtud můžete tyto kontejnery spustit jediným příkazem.

Vezměme si ještě jeden příklad:

Předpokládejme, že chcete publikovat blog, pro který budete používat CMS (Content Management System), a wordpress je nejpoužívanější CMS. V zásadě potřebujete jeden kontejner pro WordPress a potřebujete ještě jeden kontejner jako MySQL pro back-end, ten kontejner MySQL by měl být propojen s kontejnerem wordpress. Potřebujeme také jeden další kontejner pro Php Myadmin, který bude propojen s databází MySQL, v zásadě se používá pro přístup k databázi MySQL.

Co takhle provést výše uvedený příklad prakticky.

Příslušné kroky:

  1. Nainstalujte Docker Compose :
  2. Nainstalujte WordPress: Budeme používat oficiální WordPress a MariaDB Docker obrázky.
  3. Nainstalujte MariaDB: Je to jeden z nejpopulárnějších databázových serverů na světě. Vyrábí ji původní vývojáři MySQL. MariaDB je vyvíjen jako open source software a jako relační databáze poskytuje rozhraní SQL pro přístup k datům.
  4. Nainstalujte si PhpMyAdmin: Jedná se o bezplatný softwarový nástroj napsaný v PHP, určený pro správu MySQL přes web.
  5. Vytvořte web WordPress:

Začněme!

Nainstalujte Docker Compose:

Nejprve nainstalujte Python Pip:

sudo apt-get install python-pip

Nyní můžete nainstalovat Docker Compose:

sudo pip install docker-compose

Nainstalujte WordPress:

Vytvořte adresář wordpress:

mkdir wordpress

Zadejte tento adresář wordpress:

cd wordpress /

V tomto adresáři vytvořte soubor Docker Compose YAML a poté jej upravte pomocí gedit:

sudo gedit docker-compose.yml

Vložte následující řádky kódu do tohoto souboru yaml:

wordpress: image: wordpress links: - wordpress_db: mysql ports: - 8080: 80 wordpress_db: image: 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

Vím, že chcete, abych vysvětlil tento kód, takže co budu dělat, vezmu malé části tohoto kódu a vysvětlím vám, co se děje.

wordpress_db: ... prostředí: MYSQL_ROOT_PASSWORD: edureka ...

Tím nastavíte proměnnou prostředí uvnitř kontejneru wordpress_db s názvem MYSQL_ROOT_PASSWORD s požadovaným heslem. Image MariaDB Docker je nakonfigurován tak, aby po spuštění zkontroloval tuto proměnnou prostředí a postará se o nastavení databáze pomocí účtu root s heslem definovaným jako MYSQL_ROOT_PASSWORD.

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

První číslo portu je číslo portu na hostiteli a druhé číslo portu je port uvnitř kontejneru. Tato konfigurace tedy předává požadavky na portu 8080 hostitele na výchozí port 80 webového serveru uvnitř kontejneru.

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

Toto chytne docker-phpmyadmin členem komunity corbinu, propojí ho s naším kontejnerem wordpress_db s názvem mysql (to znamená zevnitř kontejneru phpmyadmin odkazy na název hostitele, který bude mysql předán našemu kontejneru wordpress_db), vystaví svůj port 80 na portu 8181 hostitelský systém a nakonec nastaví několik proměnných prostředí s naším uživatelským jménem a heslem MariaDB. Tento obrázek automaticky nezachytí proměnnou prostředí MYSQL_ROOT_PASSWORD z prostředí wordpress_dbcontainer tak, jak to udělá obrázek wordpressu. Vlastně musíme zkopírovat řádek MYSQL_ROOT_PASSWORD: edureka z kontejneru wordpress_db a nastavit uživatelské jméno na root.

Nyní spusťte skupinu aplikací:

docker-compose up -d

To je vše, co musíte udělat. Takto můžete přidat libovolný počet kontejnerů a všechny je libovolně propojit.

Nyní v prohlížeči přejděte na port 8080 pomocí veřejné IP adresy nebo názvu hostitele, jak je znázorněno níže:

localhost: 8080

Vyplňte tento formulář a klikněte na instalaci WordPress.

Po dokončení znovu navštivte IP adresu vašeho serveru (tentokrát pomocí portu 8181, např. Localhost: 8181). Zobrazí se vám přihlašovací obrazovka phpMyAdmin:

Pokračujte a přihlaste se pomocí uživatelského jména root a hesla, které jste nastavili v souboru YAML, a budete moci procházet svou databázi. Zjistíte, že server obsahuje databázi wordpress, která obsahuje všechna data z vaší instalace WordPress.

Zde končím svůj blog Docker Container. Doufám, že se vám tento příspěvek líbil. Můžeš zkontrolovat další blogy v seriálu, který pojednává o základech Dockeru.

Pokud shledáte tento blog Docker Container relevantní, podívejte se na Edureka, důvěryhodná online vzdělávací společnost se sítí více než 250 000 spokojených studentů rozložených po celém světě. Kurz certifikace Edureka DevOps pomáhá studentům získat odborné znalosti v různých procesech a nástrojích DevOps, jako jsou Puppet, Jenkins, Docker, Nagios, Ansible, Chef, Saltstack a GIT pro automatizaci více kroků v SDLC.

Máte na mě otázku? Uveďte to prosím v sekci komentáře a ozvu se vám.