Junior
Jaký je rozdíl mezi kontejnerizací a virtualizací?
sobes.tech AI
Odpověď od AI
Virtualizace emuluje hardware, což umožňuje spouštět více operačních systémů na jednom fyzickém serveru. Každá virtuální stroj (VM) má svůj vlastní operační systém, jádro, knihovny a aplikace. To zajišťuje silnou izolaci, ale vyžaduje značné zdroje (paměť, CPU, diskový prostor) pro každou VM.
Kontejnerizace funguje na úrovni operačního systému, sdílejíc jádro OS mezi aplikacemi. Kontejner obsahuje pouze aplikaci, její závislosti a knihovny. To činí kontejnery lehčí, rychlejší na spuštění a méně náročné na zdroje než VM. Izolace je dosažena na úrovni procesů a názvových prostorů OS.
Zde jsou hlavní rozdíly:
| Parametr | Virtualizace | Kontejnerizace |
|---|---|---|
| Úroveň provozu | Hardware | Operační systém |
| Izolace | OS a jádro VM | Procesy a názvové prostory OS |
| Zdroje | Vysoké (pro každou VM) | Nízké (sdílené jádro) |
| Rychlost | Pomalé spuštění VM | Rychlé spuštění kontejneru |
| Velikost obrazu | Velký (zahrnuje OS) | Malý (pouze aplikace a závislosti) |
| Přenositelnost | Vyžaduje kompatibilitu na úrovni VM | Vysoká (funguje na jakémkoli hostiteli) |
Příklad konfigurace virtuálního stroje:
// Konfigurační soubor pro qemu/kvm
[drive]
file=/var/lib/libvirt/images/muj-vm.qcow2
if=virtio
bus=virtio
cache=none
[cpu]
type=host
[memory]
size=4g
Příklad definice Dockerfile pro kontejner:
# Použijeme základní obraz
FROM ubuntu:20.04
# Nainstalujeme závislosti
RUN apt-get update && apt-get install -y nginx
# Zkopírujeme soubory aplikace
COPY html /var/www/html
# Otevřeme port
EXPOSE 80
# Spustíme aplikaci
CMD ["nginx", "-g", "daemon off;"]