Sobes.tech
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;"]