Virtualizace je technologie, která umožňuje vytvářet virtuální verze fyzických zdrojů, nejčastěji virtuálních serverů, počítačů a síťových zařízení. Pomocí hypervizoru neboli softwaru, který vytváří a spravuje virtuální počítače, můžeme na jednom fyzickém serveru nebo počítači provozovat více operačních systémů. To umožňuje efektivnější využití hardwarových zdrojů a zjednodušuje správu IT infrastruktury.
Virtualizace umožňuje konsolidovat více serverů nebo počítačů do jediného fyzického zařízení, čímž se snižují náklady na hardware a energii a zároveň se zvyšuje flexibilita a škálovatelnost: virtuální počítače lze podle potřeby rychle vytvářet, klonovat nebo přesouvat mezi fyzickými servery. Každý virtuální počítač běží ve vlastním izolovaném prostředí, což zvyšuje bezpečnost a stabilitu systému.
Máme nové jméno
Populární ekonomicko-technický magazín CIO Business World od letošního roku změnil název na CIOtrends.
Virtualizace má vyšší nároky na výkon, protože hypervizory spotřebovávají určitý podíl fyzických zdrojů, což může vést k nižšímu výkonu aplikací ve srovnání s nativním provozem na fyzických serverech. Správa velkého počtu virtuálních počítačů může být složitá a vyžaduje specializované nástroje a znalosti.
Kontejnerizace
Kontejnerizace je moderní technologie, která umožňuje provozovat aplikace v izolovaných prostředích zvaných kontejnery. Kontejner obsahuje vše potřebné pro běh aplikace, tj. frameworky, knihovny, databázové platformy atd.

Na rozdíl od virtualizace kontejnery sdílejí jádro operačního systému, ale běží jako samostatné procesy, což snižuje jejich nároky na zdroje, takže na stejném hardwaru může běžet více aplikací. Kontejnerizace usnadňuje škálovatelnost a přenositelnost díky menšímu množství dat, která kontejner tvoří, protože neobsahuje obraz kompletního operačního systému.
Kontejnery lze rychle vytvářet, zastavovat a znovu spouštět, což umožňuje rychlé nasazení a škálovatelnost aplikace. Každý kontejner obsahuje vše potřebné ke spuštění aplikace, což usnadňuje nasazení a provoz v různých prostředích. Zároveň je dosaženo určité izolace od ostatních procesů, aniž by bylo nutné spouštět celý operační systém jen pro jednu aplikaci nebo vývojové prostředí.
Chcete dostávat do mailu týdenní přehled článků z CIOtrends? Objednejte si náš mailový servis a žádná důležitá informace vám neuteče. Objednat si lze také newsletter To hlavní, páteční souhrn nejdůležitějších článků ze všech našich serverů. Newslettery si můžete objednat na této stránce.
Existují však také určitá bezpečnostní rizika. Kontejnery sdílejí jádro operačního systému, což může vést k potenciálním bezpečnostním problémům, pokud nejsou řádně izolovány nebo aktualizovány. Některé aplikace nemusejí být s kontejnerovými technologiemi kompatibilní a mohou vyžadovat více či méně sofistikované úpravy.
Kontejnery Docker
Docker je otevřená platforma pro vývoj, distribuci a spouštění aplikací. Umožňuje oddělit aplikace od infrastruktury, abyste je mohli rychle nasadit nebo pokračovat ve vývoji. Docker poskytuje možnost zabalit a spustit aplikaci ve volně izolovaném prostředí zvaném kontejner. Kontejnery vytvářejí prostředí pro běh programu. Využívají hardware prostřednictvím vašeho operačního systému, ale jsou to samostatné entity, které běží v izolovaných pískovištích. V kontejneru je předinstalováno vše potřebné ke spuštění aplikace, takže se nemusíte spoléhat na to, co je nainstalováno v hostitelském počítači.
Potřebujeme například vytvořit prostředí pro hluboké učení a trénování neuronových sítí v systému Windows. Prostředí obsahuje platformu Anaconda, PyTorch a různé další knihovny, takže můžeme začít navrhovat neuronovou síť například v jazyce Python. Pak potřebujeme z nějakého důvodu pokračovat v Linuxu, například proto, že některé knihovny, které potřebujeme, nejsou pro Windows k dispozici. Nebo vývojář pracuje v Linuxu a pak se k týmu připojí kolega, který chce pracovat v systému Windows.
Přeinstalovat stejné prostředí by bylo pracné, nemluvě o možném nesouladu platforem, verzí vývojových nástrojů nebo knihoven. Například různé verze platformy Nvidia Cuda a knihovny PyTorch. Řešení případného nesouladu je obvykle poměrně pracné.
Řešením je kontejnerizace, která umožňuje zabalit vše potřebné, tj. aplikaci nebo vývojové prostředí se všemi potřebnými knihovnami a konfigurací. Takto zabalený „balíček“ je pak snadno přenositelný mezi platformami. Abychom byli zcela přesní, balíček, v naší terminologii obraz, obsahuje předpis, jak nakonfigurovat operační prostředí a vše, co je k tomu potřeba. Takto zabalenou aplikaci lze přenést do libovolného operačního prostředí (Linux, Windows, MacOS), které podporuje kontejnerizaci, nebo ji sdílet.
V případě vývoje modelu Deep Learnig je v balíčku přibaleno vše potřebné pro vývoj. Pokud chcete studovat téma na praktických příkladech nebo programovat a trénovat neuronové sítě, stačí použít kontejner připravený a zpřístupněný výrobcem platformy (TensorFlow, PyTorch) nebo jiným vývojářem.
Aplikace s operačním prostředím a všemi závislostmi je zabalena do několika vrstev zvaných obrazy. Například kontejner pro hluboké učení bude obsahovat vrstvy:
- Kód aplikace Visual Studio
- PyTorch
- Anakonda
- Python 3.10
- Linux (tenké jádro)
Všechny tyto vrstvy obrazů dohromady se nazývají obraz Dockeru. Je důležité pochopit rozdíl mezi obrazem a kontejnerem.
Obrázek je šablona, která obsahuje sadu pokynů pro vytvoření kontejneru. Obrazy nelze po vytvoření měnit. Jsou uloženy v registru Docker, například v Docker Hubu, a lze je stáhnout (vytáhnout) a použít k vytvoření kontejnerů. Obrazy se často vytvářejí pomocí souboru Dockerfile, který obsahuje příkazy pro vytvoření obrazu. (Image) Obrazy jsou základními stavebními kameny, ze kterých se vytvářejí kontejnery. Skládají se z jednotlivých vrstev, které tvoří instrukce. Tyto vrstvy jsou určeny pouze pro čtení, ale v okamžiku spuštění kontejneru na ně Docker přidá prázdnou vrstvu pro čtení a zápis, ve které se spustí jednotlivé procesy. Pokud je udělána změna, například zkopírování existujícího souboru do jiného umístění, provede se kopie souboru z vrstvy určené pouze pro čtení. Verze souboru z vrstvy pouze pro čtení stále existuje, ale je skryta pod kopií.
Kontejner je prostředí, které se vytvoří při spuštění obrazu nástroje Docker a obsahuje vše, co potřebujete ke spuštění aplikace nebo vývojového prostředí.
Vztah mezi obrázkem a kontejnerem je podobný vztahu mezi stavebním plánem a dokončenou stavbou. Obraz je ekvivalentem plánu; je to předpis z hlediska tvaru, materiálů a dalších záležitostí. Dům lze postavit podle plánu a dům je ekvivalentem kontejneru. Plány si můžeme nechat zhotovit na míru nebo si vybrat plán z katalogu. Katalog hotových projektů je ekvivalentem rejstříku obrazů.
Tento rejstřík může být soukromý, tj. obrazy v počítači, nebo veřejný na portálu Docker Hub, kde jsou obrazy veřejně dostupné. Na tomto centru můžete zveřejnit své obrazy, které pak mohou používat potenciální zájemci. Firmy nebo některé vývojářské komunity mohou mít také primárně neveřejné registry, kde mohou obrazy sdílet pouze oprávnění uživatelé.
Použijeme-li analogii s objektově orientovaným programováním, obraz je třída a kontejner je její instance. Kontejnery jsou izolované a mají vlastní souborový systém, procesy, paměť a další prostředky. Jsou přenositelné a konzistentní v různých prostředích, protože všechny závislosti jsou zabalené do obrazu.
Kontejnery lze spouštět, zastavovat, přesouvat nebo odstraňovat. Když se změní stav nebo data v kontejneru, samotná bitová kopie se nezmění. Jinými slovy, obraz Docker slouží jako neměnný recept na vytvoření kontejneru, zatímco kontejner Docker je dynamická, běžící instance podle tohoto receptu.
Pokud potřebujeme nějaké prostředí, například platformu TensorFlow pro strojové učení, nemusíme ji pracně instalovat včetně knihoven NVIDIA CUDA, ale vyhledáme v úložišti existující obraz. Docker se pokusí obraz nejprve vyhledat v místním úložišti, a pokud ho tam nenajde, podívá se do centra Docker Hub.
Co pro koho?
Kontejnery se ve většině případů spouštějí a pracují rychleji než virtuální počítače, protože aplikační vrstva komunikuje přímo s jádrem operačního systému hostitelského počítače. Každý kontejner běží jako izolovaný proces v uživatelském prostoru hostitelského systému. Kontejnery jsou proto ideální pro mikroslužby, kontinuální nasazení a integraci a vývoj aplikací, kde je potřeba rychlost, škálovatelnost a přenositelnost.
Naproti tomu virtuální stroje mají vlastní instanci operačního systému a jsou spravovány hypervizorem, který běží na fyzickém hardwaru, takže poskytují úplnou izolaci na úrovni hardwaru. Jsou ideální pro scénáře, kde je vyžadována kompatibilita s různými operačními systémy.
Článek vyšel v magazínu CIOtrends 1/2025.
CIOtrends si můžete objednat i jako klasický časopis (v tištěné i v digitální podobně) Věnujeme se nejnovějším technologiím a efektivnímu řízení podnikové informatiky. Přinášíme nové ekonomické trendy a analýzy a zejména praktické informace z oblasti podnikového IT se zaměřením na obchodní a podnikatelské přínosy informačních technologií. Nabízíme možná řešení problémů spojených s podnikovým IT v období omezených rozpočtů. Naší cílovou skupinou je vyšší management ze všech odvětví ekonomiky.
Chcete si článek přečíst celý?
Tento článek je součástí exkluzivního obsahu pouze pro odběratele našeho newsletteru.
Přihlaste se k odběru newsletteru a my vám do mailu pošleme odkaz na celý článek.