📦 Virtualizace a kontejnery

Počítač v počítači

O čem to je

Chceš si vyzkoušet Linux, ale nechceš si rozbít Windows. Nebo škola potřebuje 20 serverů, ale nemá místo na 20 skříní. Řešením je virtualizace: na jednom fyzickém počítači běží několik „počítačů“ jako programy.

Virtuální stroje a kontejnery jsou dnes základ datových center i cloudu. A pro tebe skvělé hřiště: pokazit tu nemůžeš skoro nic.

Nové pojmy

Virtuální stroj (VM)Počítač vytvořený softwarem. Má vlastní virtuální procesor, paměť, disk a síťovou kartu a běží v něm celý operační systém.Ubuntu spuštěné v okně na Windows
Hostitel a hostHostitel (host) je skutečný počítač, na kterém virtualizace běží. Host (guest) je systém uvnitř virtuálního stroje.hostitel Windows 11, host Debian
HypervizorSoftware, který virtuální stroje vytváří a dělí mezi ně skutečný hardware.VirtualBox, Hyper-V, VMware ESXi
Snímek (snapshot)Uložený stav virtuálního stroje v určitém okamžiku. Kdykoli se k němu vrátíš.Snímek před pokusem s nastavením sítě.

Dva typy hypervizorů

TypJak běžíPříkladyPoužití
typ 1 (bare-metal)přímo na hardwaru, bez dalšího OS pod sebouVMware ESXi, Microsoft Hyper-V, KVM (Proxmox VE)servery, datová centra
typ 2 (hostovaný)jako program v běžném OSOracle VirtualBox, VMware Workstationvýuka, testování na PC

Aby virtualizace běžela rychle, musí ji umět procesor: Intel VT-x nebo AMD-V. Zapíná se v nastavení UEFI.

Vyzkoušej si: první virtuální stroj

V UEFI zapni podporu virtualizace (VT-x / AMD-V).
Nainstaluj VirtualBox.
Vytvoř nový VM: zvol typ systému, přiděl např. 2 jádra, 4 GB RAM a 25 GB disk.
Připoj ISO s Linuxem jako virtuální DVD a VM spusť.
Nainstaluj systém jako na skutečný počítač.
Udělej snímek, než začneš experimentovat.
Počítač má 16 GB RAM. Kolik virtuálních strojů po 4 GB rozumně spustíš současně?
Hostitel sám potřebuje paměť, počítejme aspoň 4 GB. Zbude 16 − 4 = 12 GB → 3 VM po 4 GB. Čtvrtý by hostitele připravil o paměť a vše by se zpomalilo.

Kontejnery

KontejnerOdlehčená izolace: aplikace se vším, co potřebuje (knihovny, nastavení), zabalená do balíčku. Kontejnery sdílejí jádro hostitelského OS, nemají vlastní celý systém.webový server Nginx v kontejneru Docker
DockerNejznámější nástroj na kontejnery. Z obrazu (šablony) spustí kontejner (běžící instanci).docker run -d -p 8080:80 nginx
Co udělá docker run -d -p 8080:80 nginx?
Stáhne obraz nginx (pokud ho nemáš) a spustí z něj kontejner na pozadí (-d). -p 8080:80 propojí port 8080 hostitele s portem 80 v kontejneru. Web pak otevřeš na http://localhost:8080.
✗Kontejner je totéž co virtuální stroj, jen menší.
✓VM má vlastní celý OS i jádro, kontejner sdílí jádro hostitele a obsahuje jen aplikaci a knihovny.

Proto kontejner startuje za vteřinu a je malý, ale linuxový kontejner nespustíš přímo na jádru Windows (Docker Desktop k tomu používá skrytý linuxový VM).

Hypervizor dělí hardware mezi virtuální stroje: typ 1 přímo na hardwaru (ESXi, Hyper-V, KVM), typ 2 jako program (VirtualBox). Snímek uloží stav VM. Kontejnery (Docker) sdílejí jádro hostitele, jsou menší a rychlejší, ale méně oddělené.

Srovnání a provoz

O čem to je

Firma provozuje e-shop, databázi a poštu. Správce se rozhoduje: dát každou službu na vlastní server, do virtuálního stroje, nebo do kontejneru? Každá možnost má jiné náklady, bezpečnost i rychlost nasazení. Porovnáme je v přehledu.

Nové pojmy

VirtualizaceVytvoření virtuálních zdrojů (počítač, disk, síť) softwarem nad skutečným hardwarem.
HypervizorVrstva, která spravuje virtuální stroje a přiděluje jim procesor, paměť a zařízení. Typ 1 běží přímo na hardwaru, typ 2 v běžném OS.
Virtuální strojÚplný počítač emulovaný softwarem, s vlastním OS a jádrem.
Kontejner a obrazObraz je neměnná šablona (aplikace + knihovny). Kontejner je spuštěná instance obrazu. Sdílí jádro hostitele, izolaci zajišťují funkce jádra Linuxu.
OrchestraceAutomatická správa mnoha kontejnerů na mnoha serverech: spouštění, škálování, restart při pádu.Kubernetes

Porovnání

Fyzický serverVirtuální strojKontejner
vlastní jádro OSanoanone, sdílí hostitele
startminutydesítky sekund až minutysekundy
velikost–GBMB
oddělení (izolace)nejlepšívelmi dobréslabší
jiný OS než hostitel–ano (Windows vedle Linuxu)jen se stejným jádrem

Výhody virtualizace

  • Úspora: jeden výkonný server nahradí mnoho málo vytížených.
  • Snímky a klony: rychlý návrat po chybě, nový server za minutu.
  • Přesun VM na jiný hostitel, i za běhu (live migrace).
  • Testování bez rizika pro skutečný systém.

Docker v kostce

PříkazCo dělá
docker pull nginxstáhne obraz
docker run -d --name web -p 8080:80 nginxspustí kontejner
docker psvypíše běžící kontejnery
docker stop webzastaví kontejner
docker imagesvypíše stažené obrazy

Obraz se popisuje souborem Dockerfile: z jakého základu vychází, co se do něj nakopíruje a co se spustí.

Vývojář říká: „U mě to funguje, na serveru ne.“ Jak pomohou kontejnery?
Aplikace se zabalí do obrazu i se všemi knihovnami a verzemi. Ten samý obraz poběží u vývojáře, na testu i na serveru stejně. Rozdíly v prostředí zmizí.
Potřebuješ na linuxovém serveru provozovat aplikaci, která běží jen ve Windows. Kontejner, nebo VM?
Kontejner sdílí jádro hostitele, tady linuxové. Aplikace pro Windows v něm nepoběží. Potřebuješ virtuální stroj s Windows.
✗Snímek virtuálního stroje je záloha, další zálohy nepotřebuju.
✓Snímek je dočasný bod návratu, ne záloha. Zálohy dělej zvlášť, na jiné úložiště.

Snímek leží na stejném úložišti jako VM. Když selže disk hostitele, zmizí VM i snímky. Dlouho držené snímky navíc rostou a zpomalují VM.

VM má vlastní OS a jádro, je dobře oddělený, ale větší a pomalejší na start. Kontejner sdílí jádro hostitele, je malý a rychlý. Typ 1: ESXi, Hyper-V, KVM; typ 2: VirtualBox. Docker: obraz → kontejner (docker run, ps, stop). Snímek není záloha.