Émulation, virtualisation et Docker : quelle différence ?

0
197
Shutterstock/kkssr

Émulation et virtualisation atteindre le même objectif en exécutant un autre système d'exploitation dans une machine virtuelle. Cependant, ils le font chacun différemment, et lorsqu'il peut être utilisé, la virtualisation est beaucoup plus rapide. Et comment Docker s'intègre-t-il dans tout cela ?

Une question de performances

La réponse courte est que l'émulation est beaucoup plus lente que la virtualisation , et tout se résume à des optimisations matérielles.

L'émulation est la forme la plus basique d'exécution d'une application sur un hôte non prévu. Un émulateur prend les commandes destinées au système cible et les traduit en quelque chose que l'ordinateur hôte peut comprendre et exécuter. Cela implique généralement l'émulation des opcodes et des registres du processeur. Un bon exemple de ceci est l'émulation de vieux jeux, comme Nintendo N64, sur un PC moderne. Le PC ne peut pas exécuter directement les jeux N64, mais l'émulateur est capable de prendre les instructions destinées à la N64 et de les exécuter aussi près que possible de la perfection.

RELATEDPourquoi les émulateurs de jeux vidéo sont-ils si importants ?

Tandis que “Émulation” est couramment utilisé pour désigner l'émulation de jeux vidéo, il est tout aussi souvent utilisé pour les applications professionnelles. Par exemple, vous avez peut-être un logiciel hérité essentiel, qui doit fonctionner sur un système comme DOS. L'exécuter dans un émulateur sur un nouveau serveur peut souvent être plus facile que de l'exécuter sur une machine à l'époque. Il peut également faire référence à un logiciel émulant les effets du matériel hérité, comme l'émulation d'anciens contrôleurs réseau.

Cependant, l'émulation peut être inutilement lente. Un cas d'utilisation extrêmement courant consiste à exécuter plusieurs machines virtuelles Linux sur un système d'exploitation hôte. Lorsque la machine hôte est la même que la machine virtuelle, l'émulation complète de l'ensemble du processeur est très lente par rapport à son exécution normale.

Publicité

Ainsi, à la place, la plupart des machines virtuelles utiliseront une technologie de virtualisation optimisée pour le matériel. Sur Intel, cette technologie s'appelle Intel-VT, et sur AMD, elle s'appelle AMD-V. Les deux accomplissent le même objectif de virtualisation des applications x86. Si vous utilisez un ordinateur de bureau, vous devrez peut-être les activer dans le BIOS s'ils ne sont pas activés par défaut.

La virtualisation est souvent utilisée en combinaison avec un hyperviseur, qui est un système d'exploitation barebone qui gère plusieurs serveurs privés virtuels. Si vous louez un VPS à une entreprise de calcul cloud comme AWS, il s'exécute probablement sur un hyperviseur comme Nitro, Proxmox ou Hyper-V d'AWS. Les hyperviseurs modernes peuvent atteindre des performances très proches du natif (également appelé “bare metal”). Bien qu'il y ait toujours un peu de surcharge, c'est mieux que de devoir l'émuler.

< /p>

La virtualisation fonctionne presque toujours mieux si vous virtualisez la même architecture. Par exemple, les processeurs x86 d'AMD et d'Intel pourront virtualiser les systèmes d'exploitation x86 comme Windows et Linux standard. Bien qu'il ne soit pas techniquement impossible pour un processeur ARM de virtualiser un processeur x86, ce n'est généralement pas une chose.

Cela peut être un problème, comme dans le cas des nouveaux Macbooks Apple basés sur ARM qui fonctionnent sur leurs propres processeurs M1. La virtualisation des systèmes d'exploitation x86 n'est pas prise en charge. Bien que vous puissiez toujours exécuter d'autres systèmes d'exploitation avec des programmes comme Parallels, cela va être beaucoup plus lent car il faudra recourir à l'émulation.

Donc, en conclusion, si vous allez exécuter un programme à partir d'un autre système d'exploitation, vous voudrez vous assurer que vous le faites en utilisant une sorte de virtualisation si vous voulez atteindre n'importe où près à 100 % de vitesse native.

CONNEXES : Docker pour les débutants : tout ce que vous devez savoir

Comment Docker se compare-t-il ?

Docker permet d'exécuter des applications dans des conteneurs, qui sont des packages isolés contenant tout le code nécessaire à l'exécution d'une application. Il est également très sécurisé ; une machine hôte peut exécuter plusieurs conteneurs Docker sans craindre qu'ils ne sortent du conteneur ou se gênent les uns avec les autres.

RELATEDQue sont les espaces de noms Linux et à quoi servent-ils ?

À bien des égards, Docker atteint exactement le même objectif d'exécuter plusieurs applications sur des machines virtuelles Linux privées, mais sous le capot, il fait les choses un peu différemment.

Publicité

Docker n'utilise pas l'émulation ni la virtualisation. Il exécute tout le code directement sur le processeur et le système hôte, sans aucune surcharge de virtualisation. Afin d'isoler les conteneurs, il utilise intelligemment les espaces de noms Linux, entre autres fonctionnalités qui peuvent isoler les processus dans leur propre “prison de conteneurs.” Les processus à l'intérieur de la prison ne peuvent pas voir ou interagir avec les fichiers, les processus ou les ressources système qui ne leur sont pas affectés.

Cela permet d'obtenir un système où plusieurs applications peuvent s'exécuter les unes à côté des autres sur un système d'exploitation hôte sans la surcharge d'un système d'exploitation distinct pour chaque serveur privé virtuel. Pour un fournisseur comme AWS, cela permet d'économiser beaucoup d'argent.

Si vous’ recherchant la virtualisation, mais soucieux des performances, Docker n'a pratiquement aucune surcharge par rapport à l'exécution d'applications sur le bare metal. Vous pouvez lire notre guide de démarrage pour en savoir plus.

CONNEXES : Comment packager l'infrastructure de votre application avec Docker