- 2022.09.26.
- Posted by: complexit
- Categories:
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