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.
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.
Windows alatt egyaránt futtathatunk Windows és Linux konténereket. Linux alatt csak Linux konténereket futtathatunk