Co je Docker?
Spropitné
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é lze číst offline.
Dockeru je opensourcový projekt pro automatizaci nasazení aplikací jako přenositelných, samoobslužných kontejnerů, které se dají spouštět v cloudu nebo místně. Docker je také společnost, která podporuje a vyvíjí tuto technologii a spolupracuje s dodavateli cloudu, Linuxu a Windows, včetně Microsoftu.
obrázek 2–2. Docker nasazuje kontejnery ve všech vrstvách hybridního cloudu.
Kontejnery Dockeru můžou běžet kdekoli, místně v datacentru zákazníka, v externím poskytovateli služeb nebo v cloudu v Azure. Kontejnery imagí Dockeru se dají nativně spouštět v Linuxu a Windows. Obrázky Windows mohou běžet jen na hostitelích s Windows, zatímco obrázky Linuxu mohou běžet na hostitelích s Linuxem i na hostitelích s Windows (v současnosti s využitím virtuálního počítače Linux Hyper-V), kde hostitel znamená server nebo virtuální počítač.
Vývojáři můžou používat vývojová prostředí ve Windows, Linuxu nebo macOS. Vývojář na vývojovém počítači spustí hostitele Dockeru, kde jsou nasazené image Dockeru, včetně aplikace a jejích závislostí. Vývojáři, kteří pracují v Linuxu nebo macOS, používají hostitele Dockeru, který je založený na Linuxu, a můžou vytvářet image jenom pro kontejnery Linuxu. (Vývojáři pracující na macOS můžou upravovat kód nebo spouštět rozhraní příkazového řádku Dockeru z macOS, ale v době psaní tohoto textu se kontejnery nespouštějí přímo v macOS.) Vývojáři, kteří pracují ve Windows, můžou vytvářet image pro linuxové kontejnery nebo kontejnery Windows.
Pro hostování kontejnerů ve vývojových prostředích a poskytování dalších vývojářských nástrojů docker dodává Docker Desktop pro Windows nebo pro macOS. Tyto produkty nainstalují potřebný virtuální počítač (hostitel Dockeru) pro hostování kontejnerů.
Pro spuštění Windows kontejnerůexistují dva typy runtime:
Kontejnery Windows Serveru poskytují izolaci aplikací pomocí technologie izolace procesů a jmenných prostorů. Kontejner Windows Serveru sdílí jádro s hostitelem kontejneru a se všemi kontejnery spuštěnými na hostiteli.
Hyper-V Kontejnery rozšiřují izolaci poskytovanou kontejnery Windows Serveru spuštěním každého kontejneru ve vysoce optimalizovaném virtuálním počítači. V této konfiguraci se jádro hostitele kontejneru nesdílí s kontejnery Hyper-V a poskytuje lepší izolaci.
Image pro tyto kontejnery se vytvářejí stejným způsobem a fungují stejně. Rozdíl spočívá v tom, jak se z image vytvoří kontejner; spuštění kontejneru Hyper-V vyžaduje dodatečný parametr. Viz Hyper-V Kontejnerypro podrobnosti.
Porovnání kontejnerů Dockeru s virtuálními počítači
Obrázek 2–3 ukazuje porovnání mezi virtuálními počítači a kontejnery Dockeru.
Virtuální počítače | Docker kontejnery |
---|---|
Mezi virtuální počítače patří aplikace, požadované knihovny nebo binární soubory a úplný hostovaný operační systém. Úplná virtualizace vyžaduje více prostředků než kontejnerizace. | Kontejnery zahrnují aplikaci a všechny její závislosti. Sdílí však jádro operačního systému s jinými kontejnery, které běží jako izolované procesy v uživatelském prostoru v hostitelském operačním systému. (Kromě kontejnerů Hyper-V, kde se každý kontejner spouští uvnitř speciálního virtuálního stroje určeného pro kontejner.) |
obrázek 2–3. Porovnání tradičních virtuálních počítačů s kontejnery Dockeru
Pro virtuální počítače existují tři základní vrstvy na hostitelském serveru, odspodu nahoru: infrastruktura, hostitelský operační systém a hypervisor, a nad tím vším má každý virtuální počítač vlastní operační systém a všechny potřebné knihovny. V případě Dockeru má hostitelský server pouze infrastrukturu a operační systém a nad tím kontejnerový modul, který udržuje kontejner izolovaný, ale sdílí základní služby operačního systému.
Vzhledem k tomu, že kontejnery vyžadují mnohem méně prostředků (například nepotřebují úplný operační systém), je snadné je nasadit a rychle začít. To vám umožní mít vyšší hustotu, což znamená, že umožňuje spouštět více služeb na stejné hardwarové jednotce, což snižuje náklady.
Vedlejším účinkem spouštění na stejném jádru je menší izolace než virtuální počítače.
Hlavním cílem image je, že prostředí (závislosti) je stejné napříč různými nasazeními. Takže to znamená, že ho můžete ladit na svém počítači a pak ho nasadit do jiného počítače s garantovaným stejným prostředím.
Image kontejneru je způsob, jak zabalit aplikaci nebo službu a nasadit ji spolehlivým a reprodukovatelným způsobem. Můžete říct, že Docker není jen technologie, ale také filozofie a proces.
Když používáte Docker, neuslyšíte, že vývojáři říkají: "Funguje na mém počítači, proč ne v produkčním prostředí?" Můžou jednoduše říct, že běží v Dockeru, protože zabalená aplikace Dockeru se dá spustit v libovolném podporovaném prostředí Dockeru a spustí způsob, jakým byl zamýšlený pro všechny cíle nasazení (jako je Vývoj, kontrola kvality, příprava a produkční prostředí).
Jednoduchá analogie
Možná jednoduchá analogie může pomoct pochopit základní koncept Dockeru.
Pojďme se na chvíli vrátit do roku 1950. Nebyly tam žádné textové procesory a kopírky byly použity všude (tak nějak).
Představte si, že zodpovídáte za rychlé vydávání dávek dopisů podle potřeby, aby je bylo možné poslat zákazníkům pomocí skutečného papíru a obálek, aby se fyzicky doručovaly na adresu každého zákazníka (tam pak nebyl žádný e-mail).
V určitém okamžiku si uvědomíte, že dopisy jsou jen složením velké sady odstavců, které jsou vybrány a uspořádány podle potřeby, podle účelu dopisu. Takže navrhnete systém pro rychlé vydávání dopisů s očekáváním, že dostanete slušné zvýšení platu.
Systém je jednoduchý:
Začnete s balíčkem průhledných listů, které obsahují každý odstavec.
Pokud chcete vytvořit sadu dopisů, vyberte listy s odstavci, které potřebujete, a pak je zarovnáte, aby vypadaly dobře a daly se dobře číst.
Nakonec umístěte sadu do fotokopírky a stisknutím klávesy Start vytvořte tolik písmen, kolik je třeba.
Takže zjednodušeně, to je základní myšlenka Dockeru.
V Dockeru je každá vrstva výslednou sadou změn, které se dějí v systému souborů po spuštění příkazu, jako je například instalace programu.
Když se tedy "podíváte" na systém souborů po zkopírování vrstvy, uvidíte všechny soubory, které jsou součástí vrstvy při instalaci programu.
Image si můžete představit jako pomocný pevný disk jen pro čtení připravený k instalaci v "počítači", kde je operační systém již nainstalován.
Podobně si kontejner můžete představit jako "počítač" s nainstalovaným pevným diskem image. Kontejner může být stejně jako počítač zapnutý nebo vypnutý.