GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak cloudové kontejnery fungují a jejich výhody

Technické trendy přicházejí a odcházejí, ale cloudové kontejnery jsou jednou technologií, která tu zůstane. Jejich počátky lze vysledovat až do roku 1982 v Unixu, ale kontejnery si získaly široké přijetí až v posledním desetiletí jako další logický krok virtualizace. Dnes jsou oblíbeným prostředkem modernizace a nasazení aplikací.

Cílem kontejnerizace – tedy procesu migrace starších aplikací do kontejnerů – je nabídnout lepší způsob, jak vytvářet, balit a nasazovat složité softwarové aplikace v různých prostředích. Kontejnerizace poskytuje způsob, jak zjednodušit nasazení, aktualizaci/změnu/úpravu a škálování aplikací.

Kontejnery jsou stále populárnější v cloudových prostředích kvůli jejich nízké hmotnosti ve srovnání s virtuálními stroji (VM). Mnoho organizací považuje kontejnery za alternativu k rozsáhlým úlohám virtuálních počítačů.

Co jsou cloudové kontejnery?

Výpočetní kontejnery obsahují kód aplikace spolu s jejími knihovnami a funkčními závislostmi, takže je lze spouštět kdekoli; ať už na stolním počítači, tradiční serverové infrastruktuře IT nebo cloudu.

Jsou malé, rychlé a přenosné, protože na rozdíl od virtuálního stroje kontejnery nemusí v každém případě obsahovat plnohodnotný OS. Vše, co potřebují, jsou knihovny a závislosti nezbytné ke spuštění aplikace a využití dalších funkcí a požadovaných zdrojů z hostitelského OS.

Kontejnery se vytvářejí z obrázků kontejnerů, což jsou šablony, které obsahují systém, aplikace a prostředí kontejneru. S obrázky kontejnerů je velká část práce při vytváření kontejneru již provedena za vás. Jediné, co musíte udělat, je přidat výpočetní logiku. Existuje mnoho různých šablon pro vytváření kontejnerů specifických pro použití, stejně jako existují knihovny a šablony pro vývoj kódu.

Existuje několik webů se šablonami kontejnerů, ale lídrem na trhu je Docker, který odstartoval trend kontejnerů v roce 2013. Docker je sada nástrojů, která uživatelům umožňuje vytvářet obrázky kontejnerů, odesílat nebo stahovat obrázky z externích registrů a spouštět a spravovat kontejnery v mnoho různých prostředí. Provozuje také největší distribuční centrum kontejnerových šablon. Chcete-li se dozvědět, jak nainstalovat Docker na váš systém Linux, přečtěte si naši příručku Instalace a používání Dockeru.

Kontejnery jsou výrazně zmenšeny co do velikosti a složitosti a často plní pouze jedinou funkci. To, že jsou malé, neznamená, že je není třeba spravovat. Kontejnery jsou udržovány prostřednictvím procesu známého jako orchestrace, který automatizuje většinu provozních úloh potřebných ke spouštění kontejnerizovaných úloh a služeb.

Orchestration pokrývá správu životního cyklu kontejneru, zajišťování, nasazení, škálování nahoru nebo dolů, vytváření sítí, vyvažování zátěže a další. Existuje několik orchestračních aplikací, ale zdaleka nejoblíbenější je Kubernetes původně navržený společností Google a nyní spravovaný Cloud Native Computing Foundation.

Kontejnery vs. virtuální počítače

Kontejnery jsou pravidelně srovnávány s virtuálními počítači zde i jinde az dobrého důvodu. Fungují na stejném konceptu, což je provoz více aplikačních prostředí na stejném fyzickém hardwaru.

Virtuální počítače jsou považovány za základ první generace cloud computingu. S příchodem 64bitových procesorů se servery vyvinuly za hranici 4 GB paměti 32bitových procesorů. Příchod vícejádrového výrobního výkonu pro více virtuálních prostředí. S dostatkem paměti a jader je možné provozovat sto nebo více virtuálních počítačů na jednom fyzickém systému.

Virtuální počítač potřebuje úplné operační prostředí, které spotřebuje jeden až dva gigabajty paměti, bez ohledu na to, zda je na Windows Serveru nebo na verzi Linuxu. Kontejner je výrazně redukované operační prostředí a využívá pouhých 6 MB paměti.

Výhodou je, že můžete mít stovky kontejnerů na jednom robustním serveru, pokud máte paměť a výpočetní výkon, abyste to všechno zvládli.

Hypervizory virtuálních počítačů virtualizují fyzický hardware a kontejnery virtualizují operační systém. Hypervizor řídí a koordinuje veškerou I/O a aktivitu stroje, vyrovnává zátěž a zpracovává všechny fyzické úlohy, jako je zpracování a přesun dat.

Správce kontejnerů, jako je Kubernetes, zpracovává softwarové úlohy, pro které kontejner není nastaven. Aplikace v kontejneru má se svými knihovnami a závislostmi to, co potřebuje. Pokud potřebuje něco jiného od operačního systému, správce kontejneru to zpracuje.

Pokud jde o virtuální počítače a kontejnery, nejde o rozhodnutí buď/nebo. Mohou snadno koexistovat, protože kontejnery uvnitř virtuálních počítačů nefungují.

Jak cloudové kontejnery fungují?

Kontejnerová technologie se zrodila s prvním oddělením oddílů a chroot procesů v Unixu, který byl později přidán do Linuxu. Kontejnery sdružují své závislé soubory a knihovny do kontejneru, místo aby se spoléhaly na základní OS. Aplikace, které běží v kontejnerech, nejsou plnohodnotné, složité aplikace, které běží ve standardním virtuálním nebo nevirtuálním prostředí. Každý kontejner funguje ve virtuální izolaci, přičemž každá aplikace přistupuje ke sdílenému jádru OS bez potřeby virtuálních počítačů.

Cloudové kontejnery jsou navrženy tak, aby virtualizovaly jednu aplikaci, ať už se jedná o jednoduchou jednoúčelovou aplikaci nebo databázi MySQL. Kontejnery mají hranici izolace na úrovni aplikace, nikoli na úrovni serveru, takže v případě problému je kontejner izolován. Pokud došlo k selhání aplikace nebo nevysvětlené nadměrné spotřebě zdrojů procesem, ovlivní to pouze tento jednotlivý kontejner, nikoli celý virtuální počítač nebo celý server. Orchestrátor je schopen roztočit další kontejner, aby nahradil problematický kontejner. Také se vypne a restartuje kontejner s problémem.

Výhody kontejnerů v cloud computingu

Výhody použití kontejnerů jsou četné. Za prvé, použití šablon je podobné tomu, jak fungují třídy a knihovny v objektově orientovaném programování (OOP). V OOP vytvoříte třídu nebo objekt a poté je znovu použijete ve více aplikacích. Totéž platí pro kontejnery. Jeden obrázek kontejneru se používá k vytvoření více kontejnerů. Koncept dědičnosti OOP se vztahuje také na kontejnery, protože obrázky kontejnerů fungují jako rodiče jiných, více přizpůsobených obrázků kontejnerů.

Kontejnery běží konzistentně na desktopu, místním serveru nebo cloudu. Díky tomu je jejich testování před nasazením nekomplikované. Některé scénáře vyžadují testovací prostředí, které má podobný rozsah jako nastavení nasazení, což znamená vyčlenění značných zdrojů pro testovací prostředí. Kontejnery lze testovat lokálně před nasazením cloudu s vědomím, že výkon bude konzistentní.

Primární výhodou kontejnerů, zejména ve srovnání s VM, je to, že kontejnery jsou lehké a přenosné. Kontejnery sdílejí jádro operačního systému stroje, což eliminuje spoustu režie. Jejich menší velikost ve srovnání s VM znamená, že se mohou rychle roztočit a lépe podporovat cloudové nativní aplikace, které se horizontálně škálují.

  1. Jsou nezávislé na platformě:Kontejnery s sebou nesou všechny své závislosti a můžete je používat v různých variantách Linuxu, pokud neprovádíte volání jádra.

  2. Podporuje moderní vývojové architektury:Díky kombinaci přenositelnosti/konzistence nasazení napříč platformami a jejich malé velikosti jsou kontejnery ideální pro moderní vývojové a aplikační metodologie, jako jsou Agile, DevOps, bezserverové a mikroslužby.

  3. Zlepšuje výkon:Kontejnerované aplikace jsou obvykle velké aplikace rozdělené na spravovatelné části. To má řadu výhod, v neposlední řadě zlepšení výkonu, protože pokud komponenta potřebuje větší zdroje, kontejner se automaticky škáluje, aby nabídl více jader CPU/paměti/sítě, a poté se sníží, když zatížení klesne.

  4. Efektivní ladění:Další výhodou kontejnerizace oproti monolitickým aplikacím je rychlejší nalezení překážek výkonu. U monolitické aplikace musí vývojáři udělat spoustu pokusů a omylů/procesů eliminace, aby našli problémové místo výkonu. Po rozdělení na součásti se problematický kód stane viditelnějším a vývojáři mohou problémové místo rychleji přiblížit.

  5. Hybridní/multi-cloudová podpora:Díky své přenositelnosti mohou kontejnery migrovat tam a zpět mezi on-prem a cloudem. Mohou také přejít od jednoho poskytovatele cloudu k jinému.

  6. Modernizace aplikací:Běžným způsobem modernizace starší on-prem aplikace je její kontejnerizace a přesunutí „tak jak je“ do cloudu. Tento model je známý jako „lift and shift“ a nedoporučuje se. On-prem aplikace se chovají jinak než cloudové nativní aplikace a pouhé přesunutí on-prem aplikace do cloudu beze změny nevyužívá výhod cloudu, jako je automatické škálování nahoru a dolů.

  7. Zlepšuje využití:V rámci monolitické aplikace musí celá aplikace a veškeré její využití paměti zvýšit výkon. To zpomaluje server. U kontejnerizované aplikace je třeba škálovat právě tuto výkonově náročnou komponentu. Dělá to automaticky a orchestrátor v případě potřeby zvětšuje zdroje a poté, když je úkol hotový.

Závěr

Kontejnery jsou pro společnosti stále populárnějším způsobem, jak migrovat místní aplikace do cloudu a využívat všechny výhody, které cloud přináší:škálovatelnost, elasticitu, vývoj DevOps a přesunutí vlastních zdrojů k poskytovateli cloudu.

Technologie je vyzrálá, s řadou konkurentů Dockeru, včetně Microsoft Azure, a konkurenty Kubernetes, jako je Red Hat OpenShift. Většina poskytovatelů cloudu nabízí některé hotové kontejnerové a orchestrační služby, včetně nás zde v Linode, se spravovanou službou Kubernetes.


Docker
  1. Jak sdílet data mezi kontejnery Docker

  2. Jak vypsat Docker kontejnery

  3. Jak zálohovat a obnovovat kontejnery Docker

  1. Monitorování kontejnerů Docker:Výhody, osvědčené postupy a nástroje, které musíte mít

  2. Jak instalovat, spouštět a odstraňovat aplikace uvnitř kontejnerů Docker – část 2

  3. Jak pozastavit a obnovit kontejnery Docker

  1. Jak exportovat a importovat kontejnery Docker

  2. Jak nainstalovat Docker a spustit kontejnery Docker v Ubuntu

  3. Jak vytvořit a spustit kontejnery LXC Linux pomocí příkazů LXC