A Docker és a virtuális gépek (KVM,Hyper-V, VirtualBox, VMware…) között rengeteg különbség és hasonlóság van. Ebben a cikkben egy rövid áttekintést adok a különbségekről.
Docker
Működési elv
A gazdagépen futó kernelt használja, ezért a docker image-n belül az operációs rendszernek meg kell egyezni a gazdagép operációs rendszerével (Csak a kernelnek kell megegyezni, egy UBUNTU gazdagépen futtathatunk Debian, Slackware vagy egyéb vendég konténert)
Memória használat
Limitálni lehet az minden konténer minimális és maximális memóriahasználatát, a megadott határokon belül a pillanatnyi igények határozzák meg, hogy a gazdagép memóriájából mennyit fogyaszt el
Processzor
A beállítástól függően vagy a rendelkezésre álló összes processzort használhatja, vagy a rendszergazdának lehetősége van korlátozni a használható processzormagok számát.
Mivel a gazdagép kernelét használja jóval kevésbé erőforrás igényes, mint a virtuális gép, nem fut példányonként külön kernel, és az operációs rendszerhez tartozó egyéb szolgáltatás.
A processzor szálakat a gazdagép kernelén keresztül használja.
Boot idő
A konténer indítási ideje annyi, ami az adott szolgáltatás indításához szükséges.
Biztonság
Üzemszerűen a konténerek formalizált módon (közös mappák, fájlok, hálózat) tudnak egymással kommunikálni
Egy esetleges támadó, vagy programhiba a gazda gép kernelén keresztül támadhatja a többi konténert vagy a gazda gépet.
Erőforrás igény
Jelentősen alacsonyabb, mint a virtuális gépeké az egyszerűbb felépítés miatt, azonban a megosztott kernel nem minden esetben fogadható el.
![](https://www.szigetvari.hu/wp-content/uploads/2023/01/docker.png)
Hypervisor
Működési elv
Teljes hardvert virtualizál, ezért minden példányban fut egy teljes operációs rendszer. Egy hardveren így több operációs rendszer is futhat (Windows, Linux,BSD), akár eltérő verziókban
Memória használat
A telepítéskor meg kell adni, hogy az adott virtuális gép mennyi memóriát használ, ezt induláskor be is foglalja a gazdagép memóriájából
Processzor
Be kell állítani, hogy az adott VM hány processzorszálat használhat, a különböző ajánlások szerint vagy csak a fizikai magok számát szabad figyelembe venni (proxmox) vagy a processzorszálakat “túl is lehet foglalni”.
Ez utóbbi erősen függ a felhasználás módjától is. Ha párhuzamosan futnak processzorigényes alkalmazások, akkor a túlfoglalással csínján kell bánni, ha a proceszorigényes alkalmazások időben eltolva futnak, akkor a módszer bátrabban használható
Boot idő
A virtuális gép indulási ideje vendég operációs rendszer idejéből tevődik össze.
Biztonság
Üzemszerűen a virtuális gépek úgy tudnak egymással kommunikálni, mintha különálló számítógépek lennének
A VM-ből a vendég operációs rendszer és a virtualizációs rétegenen keresztül, tehát a Dockerben használtnál több rétegen keresztül lehet a host gépet támadni, ami jelentősen magasabb biztonságot jelent, mint a docker esetén
Erőforrás igény
Az erőforrásigénye jelentősen magasabb. mint a Docker konténereké, ezért azonban jelentősen nagyobb rugalmasságot biztosít.
![A Hypervizor alapú virtualizáció vázlata](https://www.szigetvari.hu/wp-content/uploads/2023/01/hypervisor-1.png)
Windows alatt egyaránt futtathatunk Windows és Linux konténereket. Linux alatt csak Linux konténereket futtathatunk