Emulatie, virtualisatie en docker: wat is het verschil?

0
201
Shutterstock/kkssr

Zowel emulatie als virtualisatie bereiken hetzelfde doel: een ander besturingssysteem binnen een virtuele machine uitvoeren. Ze doen dit echter elk op een andere manier en wanneer het kan worden gebruikt, is virtualisatie veel sneller. En hoe past Docker hierin?

Een kwestie van prestaties

Het korte antwoord is dat emulatie veel langzamer is dan virtualisatie , en het komt allemaal neer op hardware-optimalisaties.

Emulatie is de meest elementaire vorm van het uitvoeren van een app op een onbedoelde host. Een emulator neemt commando's die bedoeld zijn voor het doelsysteem en vertaalt deze naar iets dat de hostcomputer kan begrijpen en uitvoeren. Meestal gaat het om het emuleren van CPU-opcodes en registers. Een goed voorbeeld hiervan is het emuleren van oude games, zoals Nintendo N64, op een moderne pc. De pc kan N64-spellen niet rechtstreeks uitvoeren, maar de emulator kan de instructies voor de N64 volgen en deze zo perfect mogelijk uitvoeren.

GERELATEERDWaarom zijn videogame-emulators zo belangrijk?

Terwijl “Emulatie” wordt vaak gebruikt om te verwijzen naar emulatie van videogames, het wordt net zo vaak gebruikt voor zakelijke toepassingen. Misschien heb je bijvoorbeeld een cruciaal stukje legacy-software die op een systeem als DOS moet draaien. Het uitvoeren van het in een emulator op een nieuwe server kan vaak gemakkelijker zijn dan het uitvoeren op een machine uit die tijd. Het kan ook verwijzen naar een stukje software dat de effecten van oudere hardware emuleert, zoals het emuleren van oude netwerkcontrollers.

Emulatie kan echter onnodig traag zijn. Een extreem veel voorkomende use case is het draaien van meerdere virtuele Linux-machines op één hostbesturingssysteem. Wanneer de hostmachine dezelfde is als de virtuele machine, is het volledig emuleren van de hele CPU erg traag in vergelijking met gewoon normaal draaien.

Advertentie

In plaats daarvan gebruiken de meeste virtuele machines hardware-geoptimaliseerde virtualisatietechnologie. Bij Intel heet deze technologie Intel-VT en bij AMD heet het AMD-V. Beide bereiken hetzelfde doel, namelijk het virtualiseren van x86-applicaties. Als u een desktopcomputer gebruikt, moet u deze mogelijk inschakelen in het BIOS als ze niet standaard zijn ingeschakeld.

Virtualisatie wordt vaak gebruikt in combinatie met een hypervisor, die is een barebones-besturingssysteem dat meerdere virtuele privéservers afhandelt. Als je een VPS huurt van een cloudcomputingbedrijf zoals AWS, draait het waarschijnlijk op een hypervisor zoals Nitro, Proxmox of Hyper-V van AWS. Moderne hypervisors kunnen prestaties bereiken die zeer dicht bij native komen (ook wel 'bare metal' genoemd). Hoewel er altijd een beetje overhead is, is het beter dan het te moeten emuleren.

Virtualisatie werkt bijna altijd het beste als u dezelfde architectuur virtualiseert . Zo zullen x86-CPU's van AMD en Intel in staat zijn om x86-besturingssystemen zoals standaard Windows en Linux te virtualiseren. Hoewel het technisch niet onmogelijk is voor een ARM-CPU om een ​​x86-CPU te virtualiseren, is het over het algemeen niets.

Dit kan een probleem zijn, zoals in het geval van Apple's nieuwe op ARM gebaseerde Macbooks die op hun eigen M1-processors draaien. Virtualisatie van x86-besturingssystemen wordt niet ondersteund. Hoewel je nog steeds andere besturingssystemen kunt gebruiken met programma's zoals Parallels, zal het een stuk langzamer zijn omdat het zijn toevlucht moet nemen tot emulatie.

Dus, tot slot, als je wilt een programma van een ander besturingssysteem gaat draaien, moet je ervoor zorgen dat je dit doet met een soort virtualisatie als je bijna 100% native snelheid wilt bereiken.

GERELATEERD: Docker voor beginners: alles wat u moet weten

Hoe werkt Docker Vergelijken?

Docker maakt het mogelijk om apps in containers uit te voeren, dit zijn geïsoleerde pakketten die alle code bevatten die nodig is om een ​​app te laten draaien. Het is ook erg veilig; een hostmachine kan meerdere Docker-containers draaien zonder bang te hoeven zijn dat ze uit de container breken of met elkaar knoeien.

GERELATEERDWat zijn Linux-naamruimten en waarvoor worden ze gebruikt?

In veel opzichten bereikt Docker exact hetzelfde doel, namelijk het uitvoeren van meerdere applicaties op virtuele Linux-machines, maar onder de motorkap doet het de dingen een beetje anders.

Advertentie

Docker gebruikt geen emulatie of virtualisatie. Het draait alle code rechtstreeks op de CPU en het hostsysteem, zonder virtualisatie-overhead. Om containers te isoleren, maakt het slim gebruik van Linux-naamruimten, naast andere functies die processen kunnen isoleren in hun eigen “container-jail.” Processen in de jail kunnen geen bestanden, processen of systeembronnen zien of ermee omgaan die niet aan hen zijn toegewezen.

Dit zorgt voor een systeem waarin meerdere apps naast elkaar kunnen draaien op één hostbesturingssysteem zonder de overhead van een afzonderlijk besturingssysteem voor elke virtuele privéserver. Voor een provider als AWS bespaart dit veel geld.

< p>Als je virtualisatie overweegt, maar je zorgen maakt over de prestaties, dan heeft Docker bijna geen overhead in vergelijking met het draaien van apps op bare metal. U kunt onze handleiding om ermee aan de slag te gaan lezen voor meer informatie.

GERELATEERD: Hoe u de infrastructuur van uw toepassing kunt verpakken met Docker