Sobes.tech
Junior

Aké sú rozdiely medzi virtuálnymi strojmi a kontajnermi?

sobes.tech AI

Odpoveď od AI

Virtuálne stroje (VM)

  • Izolácia: Plne izolujú operačné systémy (OS) a aplikácie na úrovni hardvérovej virtualizácie. Každá VM má svoj OS, ovládače a jadro.
  • Zdroje: Vyžadujú viac zdrojov (CPU, RAM, diskový priestor), pretože každá VM spúšťa plné OS.
  • Veľkosť: Obrazy VM sú značne väčšie, pretože obsahujú celé hosťovské OS.
  • Doba spustenia: Spustenie VM trvá dlhšie, pretože je potrebné načítať celé OS.
  • Správa: Správa VM je zabezpečená pomocou hypervízora (napríklad VMware, VirtualBox, KVM).

Kontajnery

  • Izolácia: Izolujú aplikácie na úrovni OS. Kontajnery používajú jadro hostiteľského OS a izolujú procesy, súborové systémy a sieťové zdroje.
  • Zdroje: Vyžadujú podstatne menej zdrojov, pretože zdieľajú jadro hostiteľského OS.
  • Veľkosť: Obrazy kontajnerov sú menšie, pretože obsahujú iba aplikáciu a potrebné knižnice.
  • Doba spustenia: Spustenie kontajnerov je veľmi rýchle, ako spustenie bežného procesu.
  • Správa: Správa kontajnerov je zabezpečená pomocou orchestrátorov (napríklad Docker, Kubernetes).

Porovnanie

Charakteristika Virtuálne stroje (VM) Kontajnery
Úroveň izolácie Hardvérová virtualizácia, plné OS v každej VM. Úroveň OS, zdieľané jadro hostiteľa.
Spotreba zdrojov Vysoká, pre každú VM je potrebná samostatná OS. Nízka, zdieľanie jadra hostiteľa.
Veľkosť obrazu Veľký (zahrňuje celú hostiteľskú OS). Malý (zahrňuje iba aplikáciu a závislosti).
Doba spustenia Pomalé (je potrebné načítanie OS). Rýchle (ako spustenie procesu).
Správa Hypervízor (VMware, VirtualBox, KVM). Orchestrátori (Docker, Kubernetes).
Prenosnosť Závisí od hypervízora. Vysoká (ak je podpora kontajnerizácie).

Príklad použitia:

# Používame základný obraz Alpine Linux
FROM alpine:latest

# Inštalujeme Nginx
RUN apk update && apk add nginx

# Kopírujeme konfiguračný súbor Nginx
COPY nginx.conf /etc/nginx/nginx.conf

# Otvárame port 80 pre prichádzajúce spojenia
EXPOSE 80

# Spúšťame Nginx pri štarte kontajnera
CMD ["nginx", "-g", "daemon off;"]

Tento Dockerfile opisuje, ako vytvoriť obraz kontajnera s webovým serverom Nginx. Kontajner bude obsahovať iba Nginx, jeho závislosti a konfiguračný súbor, využívajúc jadro hostiteľského OS. V prípade VM by bolo potrebné inštalovať plné OS, a potom Nginx.