Úvod ke kontejnerům a Dockeru

Tip

Tento obsah je výňatek z eBooku, architektury mikroslužeb .NET pro kontejnerizované aplikace .NET, které jsou k dispozici na .NET Docs nebo jako zdarma ke stažení PDF, které je možné číst offline.

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

Kontejnerizace je přístup k vývoji softwaru, ve kterém se aplikace nebo služba, její závislosti a jeho konfigurace (abstrakce jako soubory manifestu nasazení) zabalí dohromady jako image kontejneru. Kontejnerizovaná aplikace se dá otestovat jako jednotka a nasadit ji jako instanci image kontejneru do hostitelského operačního systému (OS).

Stejně jako přepravní kontejnery umožňují přepravovat zboží lodí, vlakem nebo nákladním vozidlem bez ohledu na náklad uvnitř, softwarové kontejnery fungují jako standardní jednotka nasazení softwaru, která může obsahovat různé kódy a závislosti. Kontejnerizace softwaru tímto způsobem umožňuje vývojářům a IT odborníkům nasadit je do různých prostředí s malými nebo žádnými úpravami.

Kontejnery také izolují aplikace mezi sebou ve sdíleném operačním systému. Kontejnerizované aplikace běží nad hostitelem kontejneru, který běží na operačním systému (Linux nebo Windows). Kontejnery proto mají výrazně menší nároky než image virtuálních počítačů.

Každý kontejner může spustit celou webovou aplikaci nebo službu, jak je znázorněno na obrázku 2-1. V tomto příkladu je hostitel Dockeru hostitelem kontejneru a app1, App2, Svc 1 a Svc 2 jsou kontejnerizované aplikace nebo služby.

Diagram showing four containers running in a VM or a server.

Obrázek 2-1 Více kontejnerů spuštěných na hostiteli kontejneru

Další výhodou kontejnerizace je škálovatelnost. Můžete rychle navýšit kapacitu vytvořením nových kontejnerů pro krátkodobé úkoly. Z pohledu aplikace je vytvoření instance image (vytvoření kontejneru) podobné vytvoření instance procesu, jako je služba nebo webová aplikace. Pro spolehlivost ale při spouštění více instancí stejné image na více hostitelských serverech obvykle chcete, aby každý kontejner (instance image) běžel na jiném hostitelském serveru nebo virtuálním počítači v různých doménách selhání.

Stručně řečeno, kontejnery nabízejí výhody izolace, přenositelnosti, flexibility, škálovatelnosti a kontroly napříč celým pracovním postupem životního cyklu aplikace. Nejdůležitější výhodou je izolace prostředí poskytovaná mezi vývojem a ops.