Sobes.tech
Junior

Koja je razlika između kontejnerizacije i virtualizacije?

sobes.tech АИ

Одговор од АИ

Virtuelizacija emulira hardver, omogućavajući pokretanje više operativnih sistema na jednom fizičkom serveru. Svaka virtuelna mašina (VM) ima svoj sopstveni OS, kernel, biblioteke i aplikacije. To obezbeđuje snažnu izolaciju, ali zahteva značajne resurse (memoriju, CPU, disk prostor) za svaku VM.

Kontejnerizacija radi na nivou OS-a, deleći kernel OS-a između aplikacija. Kontejner sadrži samo aplikaciju, njene zavisnosti i biblioteke. To čini kontejnere lakšim, bržim za pokretanje i manje resursno zahtevnim od VM. Izolacija se postiže na nivou procesa i imenskih prostora OS-a.

Evo glavnih razlika:

Parametar Virtuelizacija Kontejnerizacija
Nivo rada Hardver Operativni sistem
Izolacija OS i kernel VM-a Procesi i imenski prostori OS-a
Resursi Visoki (za svaku VM) Niski (deljenje kernela)
Brzina Sporo pokretanje VM-a Brzo pokretanje kontejnera
Veličina slike Velika (uključuje OS) Mala (samo aplikacija i zavisnosti)
Prenosivost Zahteva kompatibilnost na nivou VM Visoka (radi na bilo kom hostu)

Primer konfiguracije virtuelne mašine:

// Konfiguracioni fajl za qemu/kvm
[drive]
file=/var/lib/libvirt/images/moja-vm.qcow2
if=virtio
bus=virtio
cache=none

[cpu]
type=host

[memory]
size=4g

Primer Dockerfile definicije za kontejner:

# Koristimo osnovni image
FROM ubuntu:20.04

# Instaliramo zavisnosti
RUN apt-get update && apt-get install -y nginx

# Kopiramo fajlove aplikacije
COPY html /var/www/html

# Otvaramo port
EXPOSE 80

# Pokrećemo aplikaciju
CMD ["nginx", "-g", "daemon off;"]