Konténerek és virtuális gépek közötti különbségek

Bizonyára az elmúlt évek során sokszor hallottad azt a kifejezést, hogy konténerizáció és virtuális gépek. Amennyiben idáig úgy gondoltál a konténerekre, mint amikben a külföldről rendelt termékeket szállítják úgy a blog bejegyzés végén másként fogsz rájuk tekinteni.

Kezdjük is rögtön magával a virtualizációval: a virtualizáció az a folyamat, ami a fizikai hardver felett képez egy absztrakciós réteget, ezáltal például egy szerver erőforrásait több apró részre tudjuk osztani, ezek a részek a VM-ek.

A szoftver, ami ezt lehetővé teszi azt hypervisor-nak nevezzük, segítségével többféle operációs rendszert futtathatunk egymás mellett, amik a fizikai számítási erőforrás kapacitásán osztoznak egymással.

A virtuális gépek (VM-ek) segítségével virtualizált környezeteket hozhatunk létre. A VM-ek lehetővé teszik, hogy egy ugyan azon fizikai kiszolgálón egyszerre egymástól függetlenül több különböző operációs rendszert futtató VM-et futtassunk, amik közösen osztoznak a kiszolgáló fizikai erőforrásain (CPU, RAM, Storage). A VM-ek egy szoftveres rétegen keresztül lépnek interakcióba a fizikai kiszolgálójukkal, ez a réteg a hypervisor.

A VM-kel szemben a konténerek méretüket tekintve szignifikánsan kisebbek, gyorsabban deploy-olhatók és könnyebben mozgathatók. A konténerek tartalmaznak minden olyan függőséget, OS-t, binary-t és könyvtárt, ami az alkalmazás vagy microservice működéséhez szükséges. A konténerek bárhol futtathatók legyen szó egy notebook-ról vagy földi IT infrastruktúráról vagy a felhőről.

Ugyan maguk a konténerek már régóta léteznek, mégis 2013-ban a Docker megjelenésével lettek népszerűek. A Docker egy nyílt forráskódú platform konténerek futtatására, létrehozására és konténerizált alkalmazások menedzseléséhez.

Lényeges különbség a konténerek és VM-ek között

A tradicionális virtualizációban a hypervisor virtualizálja a hardvert, melynek eredményeként minden VM rendelkezik vendég operációs rendszerrel, illetve az alkalmazás futtatásához szükséges függőségekkel és könyvtárakkal.

Ahelyett, hogy az egész fizikai vasat virtualizáljuk a konténerek magát az operációs rendszert virtualizálják (Linux vagy Windows), így minden konténer kizárólag az alkalmazást és a hozzá szükséges könyvátarakat és függőségeket tartalmazzák

Konténerek és VM-ek használata?

A konténereknek és a VM-nek használatának megvannak az előnyeik és hátrányaik a végső döntés a specifikációkon múlik.

A VM-ek jobb választásnak bizonyulnak, ha a futtatni kívánt alkalmazásoknak szükségük van a teljes OS erőforrásaira és funkcionalitásaira, amikor több alkalmazást kell futtatni a szervereken vagy sokféle operációs rendszert kell kezelni. Ha rendelkezünk egy monolitikus alkalmazással, amit nem szeretnénk microservice-ekre bontani, akkor ebben az esetben a VM-ek teljes mértékben ki fognak szolgálni bennünket.

A konténerek abban az esetben lehetnek megfelelőek, ha a cél az, hogy minél több alkalmazást vagy szolgáltatást akarunk futtatni minimális szerver számmal illetve, ha maga a portabilitás is a kitűzött célok között szerepel.

Forrás: ALEF