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;"]