Sobes.tech
Junior

Aký je rozdiel medzi kontajnerizáciou a virtualizáciou?

sobes.tech AI

Odpoveď od AI

Virtualizácia emuluje hardvér, čo umožňuje spúšťanie viacerých operačných systémov na jednom fyzickom serveri. Každá virtuálna stroj (VM) má svoj vlastný OS, jadro, knižnice a aplikácie. To zabezpečuje silnú izoláciu, ale vyžaduje značné zdroje (pamäť, CPU, diskový priestor) pre každú VM.

Kontajnerizácia funguje na úrovni OS, zdieľajúc jadro OS medzi aplikáciami. Kontajner obsahuje iba aplikáciu, jej závislosti a knižnice. To robí kontajnery ľahšími, rýchlejšie spúšťateľnými a menej náročnými na zdroje ako VM. Izolácia sa dosahuje na úrovni procesov a názvových priestorov OS.

Tu sú hlavné rozdiely:

Parameter Virtualizácia Kontajnerizácia
Úroveň prevádzky Hardvér Operačný systém
Izolácia OS a jadro VM Procesy a názvové priestory OS
Zdroje Vysoké (pre každú VM) Nízke (zdieľanie jadra)
Rýchlosť Pomalé spustenie VM Rýchle spustenie kontajnera
Veľkosť obrazu Veľký (zahŕňa OS) Malý (len aplikácia a závislosti)
Prenosnosť Vyžaduje kompatibilitu na úrovni VM Vysoká (funguje na akomkoľvek hostiteľovi)

Príklad konfigurácie virtuálnej mašiny:

// Konfiguračný súbor pre qemu/kvm
[drive]
file=/var/lib/libvirt/images/moj-vm.qcow2
if=virtio
bus=virtio
cache=none

[cpu]
type=host

[memory]
size=4g

Príklad definície Dockerfile pre kontajner:

# Používame základný obraz
FROM ubuntu:20.04

# Inštalujeme závislosti
RUN apt-get update && apt-get install -y nginx

# Kopírujeme súbory aplikácie
COPY html /var/www/html

# Otvárame port
EXPOSE 80

# Spúšťame aplikáciu
CMD ["nginx", "-g", "daemon off;"]