Operační systémy a virtualizace
Na dnešním cvičení si zopakujeme, co je to virtualizace, připomeneme její typy a ukážeme, jak si můžeme na naše zařízení nainstalovat další operační systém. Okrajově se také podíváme na typ virtualizace zvaný kontejnerizace.
Virtualizace
Virtualizace je technologie, která umožňuje běh více virtuálních strojů na jednom fyzickém zařízení. Tyto stroje od sebe běží odděleně, sdílí ale stejný hardware. Tato technologie tedy dokáže vytvořit virtuální verzi několika fyzických strojů (počítačů).
Virtualizace je možná díky hypervizoru. Hypervizor si lze představit jako prostředníka mezi hardware a virtuálními stroji. Vytváří a spravuje virtuální stroje, přiděluje jim systémové prostředky a stará se o jejich izolaci. Rozlišujeme dva druhy hypervizorů.
-
Hypervizor typu 1
Tento hypervizor běží přímo na fyzickém hardwaru, bez hostitelského operačního systému. Slouží jako operační systém samotný, který spravuje hardware a virtuální stroje. Je velmi výkonný a používá se například v datacentrech.
-
Hypervizor typu 2
Hypervizor typu 2 běží jako aplikace v běžném operačním systému (hostitelský OS). Lze ho velmi jednoduše nainstalovat a zprovoznit. Oproti typu 1 má ale nižší výkon.
Rozlišujeme několik typů virtualizace. Každý typ má své výhody a využití.
-
Plná virtualizace
Plná virtualizace je typ virtualizace, při které má každý virtuální stroj vlastní operační systém a běží zcela nezávisle na fyzickém hardware. Virtuální stroj se chová jako skutečný počítač. Tento typ virtualizace poskytuje maximální izolaci, je však náročnější na výkon. Hodí se například pro testování různých operačních systémů nebo při vývoji aplikací, kdy je potřeba simulovat jejich chování na různých systémech. Mezi nejznámější software umožňující plnou virtualizaci patří VirtualBox.
-
Para-virtualizace
Paravirtualizace je typ virtualizace, při které je hostovaný operační systém upravený tak, aby věděl, že běží ve virtuálním stroji. Hypervizor a OS spolu komunikují přímo, což snižuje režii a zvyšuje výkon. Virtuální stroj stále poskytuje izolované prostředí, ale vyžaduje podporu upraveného OS. Tento typ se často používá na serverech a v datacentrech, kde je důležitý výkon a efektivní využití hardwaru.
-
Kontejnerizace
Kontejnerizace je typ virtualizace, při které se aplikace spolu se všemi potřebnými závislostmi a knihovnami spouští v lehkém, izolovaném prostředí zvaném kontejner, aniž by bylo nutné virtualizovat celý operační systém. Kontejnery umožňují, aby aplikace běžely konzistentně na různých systémech, což usnadňuje distribuci, škálování a nasazování aplikací.
-
Aplikační virtualizace
Aplikační virtualizace je typ virtualizace, při které se virtualizuje pouze konkrétní aplikace, nikoliv celý operační systém. Aplikace běží v izolovaném prostředí, které zabraňuje konfliktům s ostatními programy a s operačním systémem. Díky tomu je možné aplikaci snadno distribuovat, testovat různé verze současně nebo spouštět na různých platformách. Příkladem může být třeba Java Virtual Machine (JVM).
Plná virtualizace ve VirtualBoxu
VirtualBox je multiplatformní virtualizační nástroj (open-source software vyvíjený společností Oracle) umožňující plnou virtualizaci. VirtualBox umožňuje používat funkce jako snapshoty, sdílené složky, USB zařízení nebo různé síťové režimy. My si dnes ukážeme základní práci s VirtualBoxem.
Nejprve nainstalujeme VirtualBox z oficiálních stránek projektu.
Po jeho instalaci máme připravený nástroj pro vytváření virtuálních strojů, ale zatím nemáme žádný operační systém, který by mohl ve virtuálním stroji běžet. Stejně jako u nového fyzického počítače je nutné operační systém nejprve nainstalovat. Aby bylo možné operační systém do virtuálního stroje nainstalovat, potřebujeme instalační médium. Ve fyzickém světě by to bylo například DVD nebo USB flash disk. Ve virtuálním prostředí tuto roli plní ISO soubor. ISO soubor je digitální obraz instalačního disku. Obsahuje všechny soubory potřebné k instalaci operačního systému a umožňuje jeho spuštění.
ISO soubory operačních systémů se stahují výhradně z oficiálních zdrojů, aby byla zajištěna bezpečnost a správná funkčnost. Například operační systém Ubuntu lze nainstalovat ze souboru ISO, který je dostupný na tomto odkaze.
Vytvoření nového virtuálního počítače ve VirtualBoxu
V tuto chvíli máme nainstalovaný VirtualBox a stažený ISO soubor operačního systému. Dalším krokem je vytvoření nového virtuálního počítače, tedy virtuálního stroje, do kterého operační systém nainstalujeme. Po spuštění VirtualBoxu klikneme na tlačítko New. Tím se otevře průvodce vytvořením virtuálního stroje, který nás provede základním nastavením. Nejprve zadáme název virtuálního počítače. Název slouží pouze pro přehlednost a nemá vliv na funkčnost. Následně vybereme ISO soubor. V dalším kroku zvolíme typ a verzi operačního systému.
Následně je nutné virtuálnímu stroji přidělit část operační paměti fyzického počítače. Obecně lze říci, že je potřeba přidělit alespoň 2 GB paměti.
Spuštění virtuálního počítače
Po vytvoření virtuálního stroje a připojení ISO souboru je možné virtuální počítač poprvé zapnout. Virtuální stroj spustíme tak, že ho vybereme v seznamu a klikneme na tlačítko start.
U většiny linuxových distribucí se po spuštění z ISO zobrazí nabídka, která nabízí dvě možnosti: Live CD nebo instalace. Live CD umožňuje spustit operační systém přímo z ISO souboru, bez instalace na disk. Tato možnost slouží především k vyzkoušení systému, jelikož se změny na tomto počítači neukládají. Při volbě trvalé instalace se operační systém nainstaluje na virtuální disk virtuálního stroje. Po instalaci se virtuální stroj chová jako běžný počítač s vlastním systémem.
Základní práce s VM
Ukážeme si, jaké základní operace můžeme s virtuálními stroji dělat. Mezi ty nejzákladnější patří spuštění, vypnutí, pozastavení, restartování. Dále lze také ukládat stav stroje (uloží paměť a disk) nebo dělat snapshoty.
Snapshoty
Snapshot je fotografie stavu virtuálního stroje v daný okamžik. Umožňuje nám se kdykoliv vrátit zpět, jako bychom stroj zmrazili v čase. To je užitečné zejména při testování nového softwaru. V prostředí VirtualBox lze snapshot udělat velmi snadno. Vybereme cílový virtuální stroj, klikneme na panel Snapshots a zvolíme možnost Take. Snapshot uloží aktuální obsah paměti RAM, stav virtuálního disku a nastavení VM. Pokud bychom se v budoucnu chtěli vrátit k určitému stavu virtuálního stroje, stačí vybrat pořízený snapshot a zvolit možnost Restore.
Kontejnerizace - Docker
Docker je nástroj pro kontejnerizaci, tedy pro vytváření a spouštění izolovaných prostředí pro aplikace. Na rozdíl od virtuálních strojů kontejnery nesimulují celý operační systém, ale sdílí jádro hostitelského OS a obsahují pouze aplikaci a její závislosti. Díky tomu jsou kontejnery lehké, rychlé a přenositelné, spouštějí se rychle a zabírají mnohem méně zdrojů než plnohodnotný virtuální stroj. Docker umožňuje vývojářům vytvářet aplikace, které běží stejně na všech počítačích, bez ohledu na konfiguraci hostitelského systému. Tím eliminujeme problémy typu „na mém počítači to ale funguje“.
Kontejnery Dockeru se skládají z image, který lze chápat jako šablonu aplikace, a containeru, což je běžící instance image. Image aplikací lze stahovat z Docker Hubu, což je online repozitář image. Docker se hodí pro vývoj, testování i nasazení jakékoliv aplikace, bez ohledu na její typ. Docker zjednodušuje správu prostředí, umožňuje rychlé nasazení, efektivně využívá systémové zdroje a zabraňuje konfliktům mezi různými aplikacemi a jejich závislostmi.
Také v Dockeru můžeme spustit kontejner s Ubuntu. Hlavní rozdíl oproti virtuálnímu stroji je v tom, že kontejner nesimulujte celý operační systém, ale sdílí jádro hostitelského systému a obsahuje jen aplikace, knihovny a nástroje Ubuntu. Kontejner tedy není samostatný počítač. Startuje ale velmi rychle, zabírá málo paměti a disku a lze ho snadno přesouvat mezi různými počítači.
Výše zmíněné si můžeme vyzkoušet i na našem zařízení. Nejprve musíme stáhnout Docker z oficiálních stránek projektu.
Po nainstalování Docker Desktopu můžeme spustit Ubuntu přímo v kontejneru. Nejprve je potřeba
stáhnout image Ubuntu z oficiálního repozitáře Docker Hub. To uděláme pomocí příkazu v terminálu:
docker pull ubuntu. Tento příkaz stáhne nejnovější verzi Ubuntu do našeho systému a připraví ji
k použití.
Jakmile je image stažený, můžeme vytvořit a spustit kontejner. Použijeme příkaz
docker run -it ubuntu
, který vytvoří novou instanci kontejneru a otevře interaktivní terminál. V tomto terminálu už běží
Ubuntu a můžeme spouštět příkazy stejně, jako v terminálu počítače s operačním systémem Ubuntu. Pokud chceme
kontejner pojmenovat a mít možnost jej snadno spravovat, můžeme přidat parametr
--name nazev_kontejneru,
například docker run -it --name muj_ubuntu ubuntu.
Po dokončení práce v kontejneru lze kontejner ukončit příkazem exit. Pokud jej chceme později
znovu spustit, použijeme příkaz docker start -ai muj_ubuntu, který kontejner znovu spustí a
připojí nás do
interaktivního terminálu. Tímto způsobem můžeme Ubuntu v Dockeru používat opakovaně, rychle spouštět a
testovat aplikace, aniž bychom potřebovali instalovat celý operační systém ve virtuálním stroji.
Úkoly k dnešnímu cvičení
-
Úkol číslo 1
Nainstalujte a zprovozněte virtuální stroj Ubuntu. Udělejte několik screenshotů z průběhu instalace i z nainstalovaného operačního systému a tyto snímky uložte do Teamsů.