Co je Docker?

Dokončeno

Než začneme s naší rychlou prohlídkou kontejnerů Dockeru, pojďme se podívat, jak náš tým vyvíjí a nasazuje aplikace. Stručně popíšeme také některé výzvy, kterým naše týmy čelí.

Do procesu vývoje a správy aplikací je ve vaší firmě zpravidla zapojen jeden nebo více týmů. Existuje vývojový tým, který vytvoří software a provozní tým zodpovědný za nasazení těchto aplikací. Provozní tým zodpovídá také za správu infrastruktury hostování aplikací.

Předpokládejme například, že vyvíjíme portál pro sledování objednávek, který budou používat různé pobočky naší společnosti. Během procesu vývoje a publikování aplikace hostuje několik prostředí. Nejprve vývojový tým vyvíjí a testuje software ve vývojovém prostředí. Odtud se pak software nasadí do prostředí pro kontrolu kvality (QA), po kterém následují předprodukční a konečné produkční prostředí.

V předchozím scénáři budeme muset zvážit několik problémů:

  • Správa hostitelských prostředí

    Různá prostředí vyžadují správu softwaru i hardwaru. Musíme zajistit, aby nainstalovaný software a nakonfigurovaný hardware byl všude stejný. U všech prostředí potřebujeme také nakonfigurovat například přístup k síti, úložiště dat a zabezpečení, a to konzistentním a snadno opakovatelným způsobem.

  • Kontinuita při dodávání softwaru

    Nasazení aplikací do našich prostředí musí probíhat konzistentně. Každý balíček nasazení musí obsahovat všechny systémové balíčky, binární soubory, knihovny, konfigurační soubory a další položky, které zajišťují plně funkční aplikaci. Musíme rovněž zajistit, aby všechny tyto závislosti odpovídaly verzím softwaru a architektuře.

  • Efektivní využití hardwaru

    Každá nasazená aplikace se musí provozovat tak, aby byla izolovaná od jiných aplikací provozovaných na stejném hardwaru. Naším cílem je provozovat na každém serveru více než jednu aplikaci, abychom dosáhli co nejlepšího využití prostředků bez jejich vzájemného ohrožení.

  • Přenositelnost aplikací

    Přenositelnost aplikací je zásadní z několika důvodů. Hostitelské prostředí může selhat nebo možná budeme muset škálovat naši aplikaci na více instancí. V obou případech se potenciální výsledek znovu nasadí do nového prostředí. Software potřebujeme přesunout z jednoho hostitele na druhého, dokonce i když je základní infrastruktura odlišná. Kvůli omezení výpadku u zákazníků musí k tomuto přesunutí dojít co nejrychleji.

Než se podíváme na funkce Dockeru, které pomáhají s řešením těchto problémů, probereme několik konceptů a podíváme se na stručný přehled architektury Docker.

Co je kontejner?

Kontejner je volně izolované prostředí, které umožňuje sestavovat a spouštět softwarové balíčky. Tyto softwarové balíčky obsahují kód a všechny závislosti pro rychlé a spolehlivé provozování aplikací v libovolném výpočetním prostředí. Těmto balíčkům se říká image kontejneru.

Image kontejneru se stává celkem, který používáme k distribuci svých aplikací.

Co je kontejnerizace softwaru?

Kontejnerizace softwaru je metoda virtualizace operačního systému, která se používá k nasazení a spouštění kontejnerů bez použití virtuálního počítače. Kontejnery můžou běžet na fyzickém hardwaru, v cloudu, na virtuálních počítačích a v několika operačních systémech.

Co je Docker?

Docker je platforma pro kontejnerizaci určená k vývoji, dodávání a spouštění kontejnerů. Docker nepoužívá hypervisor a pokud vyvíjíte a testujete aplikace, můžete Docker spustit ve stolním nebo přenosném počítači. Desktopová verze Dockeru podporuje Linux, Windows a macOS. V produkčních systémech je Docker dostupný pro serverová prostředí včetně mnoha variant Linuxu a Microsoft Windows Serveru 2016 a novějších verzí. Mnoho cloudů, včetně Azure, podporuje Docker.

Architektura Dockeru

Platforma Docker se skládá z několika komponent, které se používají k sestavování, provozování a správě kontejnerizovaných aplikací.

Docker Engine

Docker Engine sestává z několika komponent nakonfigurovaných jako implementace klient-server, kde klient a server souběžně běží na stejném hostiteli. Klient komunikuje se serverem pomocí rozhraní REST API, které klientovi umožňuje také komunikovat se vzdálenou instancí serveru.

Diagram showing a high-level overview of the Docker architecture.

Další šipky znázorňující komunikaci mezi serverem Dockeru, spuštěnými kontejnery a uloženými imagi. Tyto šipky značí, jak server Dockeru načítá uložené image kontejnerů a spravuje spuštěné kontejnery.

Klient Dockeru

Existují dvě alternativy pro klienta Dockeru: Aplikace příkazového řádku s názvem docker nebo aplikace založená na grafickém uživatelském rozhraní (GUI) s názvem Docker Desktop. Rozhraní příkazového řádku i Desktop Dockeru komunikují se serverem Dockeru. Příkazy docker z rozhraní příkazového řádku nebo Docker Desktopu používají rozhraní REST API Dockeru k odesílání instrukcí místnímu nebo vzdálenému serveru a fungují jako primární rozhraní, které používáme ke správě kontejnerů.

Server Dockeru

Server Dockeru je démon s názvem dockerd. Démon dockerd reaguje na žádosti klienta přes rozhraní Docker REST API a dokáže komunikovat s jinými démony. Server Dockeru zodpovídá rovněž za sledování životního cyklu kontejnerů.

Objekty Dockeru

Pro podporu nasazení kontejnerů budete vytvářet a konfigurovat několik objektů. Sem patří sítě, svazky úložiště, moduly plug-in a objekty jiných služeb. Všechny tyto objekty zde neprobereme, je ale dobré vědět, že tyto objekty jsou položky, které můžeme vytvářet a nasazovat podle potřeby.

Docker Hub

Docker Hub je registr kontejnerů Dockeru typu Software as a Service (SaaS). Registry kontejnerů jsou úložiště, která se používají k ukládání a distribuci vytvářených imagí kontejnerů. Docker Hub je výchozí veřejný registr, který Docker používá ke správě imagí.

Pamatujte si, že můžete vytvořit a používat privátní registr Dockeru, nebo použít jednu z mnoha dostupných možností poskytovatelů cloudu. Službu Azure Container Registry můžete například použít k ukládání imagí kontejnerů, které se mají použít v několika službách s podporou kontejnerů Azure.