Kdy použít kontejnery Dockeru

Dokončeno

Jak jsme se naučili, Docker má několik funkcí, které můžeme použít. Zde se podíváme na výhody, které Docker nabízí našemu vývojovému a provoznímu týmu. Rozebereme rovněž několik situací, ve kterých nemusí být Docker tou nejlepší volbou.

Tyto aspekty vám pomohou rozhodnout, jestli se Docker hodí pro vaši strategii kontejnerizace.

Vzpomeňte si, že náš tým čelí mnoha výzvám při vývoji a publikování portálu pro sledování objednávek. Hledají řešení pro:

  • Spravujte naše hostitelské prostředí s lehkostí.
  • Zaručuje kontinuitu v tom, jak dodáváme náš software.
  • Ujistěte se, že efektivně používáme serverový hardware.
  • Umožňuje přenositelnost našich aplikací.

Docker představuje řešení těchto problémů. Pojďme se podívat na všechny výhody, které jsme zatím probrali.

Výhody Dockeru

Při používání Dockeru můžeme okamžitě využít výhody, které kontejnerizace nabízí.

Efektivní využití hardwaru

Kontejnery běží bez použití virtuálního počítače. Jak jsme se dozvěděli, kontejner spoléhá na jádro hostitele pro funkce, jako je systém souborů, správa sítě, plánování procesů a správa paměti.

Diagram contrasting VM resource use versus Docker resource use.

Ve srovnání s virtuálním počítačem vidíme, že virtuální počítač vyžaduje nainstalovaný operační systém k poskytování funkcí jádra spuštěným aplikacím uvnitř virtuálního počítače. Mějte na paměti, že operační systém virtuálního počítače vyžaduje také místo na disku, paměť a čas procesoru. Odebráním virtuálního počítače a požadavku dalšího operačního systému můžeme v hostiteli uvolnit prostředky a použít je ke spuštění jiných kontejnerů.

Izolace kontejneru

Kontejnery Dockeru poskytují funkce zabezpečení pro souběžné provozování několika kontejnerů na stejném hostiteli bez vzájemného ovlivňování. Jak jsme viděli, můžeme úložiště dat a síť nakonfigurovat tak, aby kontejnery byly izolované, nebo aby se data a připojení sdílela mezi určitými kontejnery.

Pojďme tuto funkci porovnat s virtuálními počítači.

Diagram that shows a physical host running multiple VMs.

Předpokládejme, že máme fyzického hostitele, na kterém běží dva virtuální počítače. Máme tři aplikace, které chceme provozovat tak, aby byly navzájem izolované. Rozhodli jsme se nasadit první aplikaci na virtuální počítač 1 a druhou do virtuálního počítače VM2, abychom obě aplikace oddělily od sebe. Pokud se teď rozhodneme nainstalovat třetí aplikaci, budeme muset nainstalovat další virtuální počítač, pokud chceme v tomto vzoru pokračovat.

Přenositelnost aplikací

Kontejnery běží téměř všude: desktopy, fyzické servery, virtuální počítače a cloud. Tato kompatibilita modulu runtime usnadňuje přesun kontejnerizovaných aplikací mezi různá prostředí.

Vzhledem k tomu, že kontejnery jsou jednoduché, netrpí pomalým spouštěním ani vypínáním, jako jsou virtuální počítače. Díky tomuto aspektu je opětovné nasazení a další scénáře nasazení ( například vertikální navýšení nebo snížení kapacity) hladké a rychlé.

Dodávání aplikací

Při použití Dockeru se kontejner stává celkem, který používáme k distribuci aplikací. Tento koncept zajišťuje, že máme standardizovaný formát kontejneru, který používá náš vývojářský i provozní tým. Naši vývojáři se mohou soustředit na vývoj softwaru a provozní tým se může zaměřit na nasazení a správu softwaru.

Kontejner můžeme použít v každém kroku procesu nasazení, jakmile vývojový tým vydá build aplikace. Kontejnery jsou ideálními kandidáty pro kontinuální integraci a urychlí čas od sestavení do produkčního prostředí.

Správa hostitelských prostředí

Prostředí aplikace se konfiguruje interně vůči kontejneru. To poskytuje provoznímu týmu flexibilitu, díky které může prostředí aplikace spravovat ještě podrobněji. Náš tým může monitorovat aktualizace operačního systému, používat opravy zabezpečení jednou a podle potřeby zavést aktualizovaný kontejner.

Tento tým může rovněž určit, které aplikace se mají nainstalovat, aktualizovat a odebrat, aniž by to ovlivnilo jiné kontejnery. Každý kontejner je izolovaný a má přiřazené limity prostředků odděleně od jiných kontejnerů.

Cloudová nasazení

Kontejnery Dockeru představují výchozí architekturu kontejnerů, které používají služby kontejnerizace Azure, a mnoho dalších cloudových platforem je také podporuje.

Kontejnery Dockeru můžete například nasadit do služby Azure Container Instances, Aplikace Azure Service a Azure Kubernetes Services. Každá z těchto možností nabízí odlišné funkce a možnosti.

Služba Azure Container Instances vám například umožňuje se zaměřit na návrh a tvorbu aplikací bez starostí spojených se správou infrastruktury. A pokud potřebujete orchestrovat spoustu kontejnerů, usnadňuje nasazení a správu kontejnerových nasazení ve velkém měřítku služba Azure Kubernetes Service.

Kdy nepoužívat kontejnery Dockeru

Kontejnery Dockeru poskytují mnoho výhod, ale mějte na paměti, že kontejnery nemusí vyhovovat všem vašim požadavkům. Měli byste pamatovat na několik aspektů.

Zabezpečení a virtualizace

Kontejnery poskytují určitou úroveň izolace. Kontejnery ale sdílejí jedno jádro operačního systému hostitele, což může být kritický prvek útoku.

Hostitelé Windows poskytují další model izolace, na kterém je možné použít účelový virtuální počítač k izolaci kontejneru na úrovni hypervisoru. Tento režim se nazývá režim izolace Hyper-V a přidává další vrstvu zabezpečení mezi kontejnery a hostitelem kontejneru.

Musíme také vzít v úvahu aspekty, jako jsou úložiště a sítě, abychom měli jistotu, že vezmeme v úvahu všechny aspekty zabezpečení. Všechny kontejnery budou například standardně používat síť typu most a vzájemně k sobě přistupovat přes IP adresu.

Ne všechny aplikace budou těžit z výhod kontejnerizace. V takových případech může být vhodnější použít virtuální počítač.

Monitorování služeb

Správa aplikací a kontejnerů je složitější než tradiční nasazení virtuálních počítačů. Existují funkce protokolování, které nám říkají o stavu spuštěných kontejnerů, ale podrobnější informace o službách uvnitř kontejneru je obtížnější monitorovat.

Docker například poskytuje příkaz docker stats. Tento příkaz vrátí informace pro kontejner, jako je procento využití procesoru, procento využití paměti, vstupně-výstupní operace zapsané na disk, odesílaná a přijatá síťová data a přiřazená ID procesů. Tyto informace jsou užitečné jako okamžitý datový proud; Není však provedena žádná agregace, protože data nejsou uložena. Museli bychom nainstalovat software třetích stran pro smysluplné zachytávání dat v určitém časovém období.