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