Conteneurs et machines virtuellesContainers vs. virtual machines

Cette rubrique présente quelques-unes des similitudes et des différences clés entre les conteneurs et les machines virtuelles, et quand vous souhaitez les utiliser.This topic discusses some of the key similarities and differences between containers and virtual machines (VMs), and when you might want to use each. Les conteneurs et les machines virtuelles ont chacun leur utilisation : en fait, de nombreux déploiements de conteneurs utilisent des machines virtuelles comme système d’exploitation hôte plutôt que de s’exécuter directement sur le matériel, en particulier lors de l’exécution de conteneurs dans le Cloud.Containers and VMs each have their uses–in fact, many deployments of containers use VMs as the host operating system rather than running directly on the hardware, especially when running containers in the cloud.

Pour obtenir une vue d’ensemble des conteneurs, consultez fenêtres et conteneurs.For an overview of containers, see Windows and containers.

Architecture de conteneurContainer architecture

Un conteneur est un silo léger isolé pour l’exécution d’une application sur le système d’exploitation hôte.A container is an isolated, lightweight silo for running an application on the host operating system. Les conteneurs sont générés par-dessus le noyau du système d’exploitation hôte (ce qui peut être considéré comme le plomberie du système d’exploitation) et contiennent uniquement des applications et des services et des API de système d’exploitation légers qui s’exécutent en mode utilisateur, comme indiqué dans ce diagramme.Containers build on top of the host operating system's kernel (which can be thought of as the buried plumbing of the operating system), and contain only apps and some lightweight operating system APIs and services that run in user mode, as shown in this diagram.

Diagramme architectural montrant comment les conteneurs s’exécutent au-dessus du noyau

Architecture d'ordinateurs virtuelsVirtual machine architecture

Contrairement aux conteneurs, les machines virtuelles exécutent un système d’exploitation complet, y compris son propre noyau, comme indiqué dans ce diagramme.In contrast to containers, VMs run a complete operating system–including its own kernel–as shown in this diagram.

Diagramme architectural montrant comment les machines virtuelles exécutent un système d’exploitation complet à côté du système d’exploitation hôte

Conteneurs et machines virtuellesContainers vs. virtual machines

Le tableau suivant présente certaines similarités et différences de ces technologies complémentaires.The following table shows some of the similarities and differences of these complementary technologies.

Ordinateur virtuelVirtual machine ConteneurContainer
IsolationIsolation Fournit une isolation complète du système d’exploitation hôte et des autres machines virtuelles.Provides complete isolation from the host operating system and other VMs. Cela est utile quand une limite de sécurité forte est essentielle, par exemple l’hébergement d’applications provenant de sociétés concurrentes sur le même serveur ou cluster.This is useful when a strong security boundary is critical, such as hosting apps from competing companies on the same server or cluster. Fournit généralement une isolation légère de l’hôte et d’autres conteneurs, mais ne fournit pas autant de limite de sécurité qu’une machine virtuelle.Typically provides lightweight isolation from the host and other containers, but doesn't provide as strong a security boundary as a VM. (Vous pouvez augmenter la sécurité en utilisant le mode d’isolation Hyper-V pour isoler chaque conteneur dans une machine virtuelle légère).(You can increase the security by using Hyper-V isolation mode to isolate each container in a lightweight VM).
Système d’exploitationOperating system Exécute un système d’exploitation complet, y compris le noyau, ce qui nécessite davantage de ressources système (processeur, mémoire et stockage).Runs a complete operating system including the kernel, thus requiring more system resources (CPU, memory, and storage). Exécute la partie mode utilisateur d’un système d’exploitation et peut être personnalisée pour contenir uniquement les services nécessaires à votre application, en utilisant moins de ressources système.Runs the user mode portion of an operating system, and can be tailored to contain just the needed services for your app, using fewer system resources.
Compatibilité des invitésGuest compatibility S’exécute sur n’importe quel système d’exploitation à l’intérieur de la machine virtuelleRuns just about any operating system inside the virtual machine S’exécute sur la même version du système d’exploitation que l’hôte (l' isolation Hyper-V vous permet d’exécuter des versions antérieures du même système d’exploitation dans un environnement de machine virtuelle léger)Runs on the same operating system version as the host (Hyper-V isolation enables you to run earlier versions of the same OS in a lightweight VM environment)
DéploiementDeployment Déployer des machines virtuelles individuelles à l’aide du centre d’administration Windows ou du Gestionnaire Hyper-V ; Déployez plusieurs machines virtuelles à l’aide de PowerShell ou de System Center Virtual Machine Manager.Deploy individual VMs by using Windows Admin Center or Hyper-V Manager; deploy multiple VMs by using PowerShell or System Center Virtual Machine Manager. Déployer des conteneurs individuels à l’aide de l’ancrage via la ligne de commande ; Déployez plusieurs conteneurs à l’aide d’un orchestrateur tel que le service Azure Kubernetes.Deploy individual containers by using Docker via command line; deploy multiple containers by using an orchestrator such as Azure Kubernetes Service.
Mises à jour et mises à niveau du système d’exploitationOperating system updates and upgrades Téléchargez et installez les mises à jour du système d’exploitation sur chaque machine virtuelle.Download and install operating system updates on each VM. L’installation d’une nouvelle version du système d’exploitation nécessite la mise à niveau ou la création d’une machine virtuelle entièrement nouvelle.Installing a new operating system version requires upgrading or often just creating an entirely new VM. Cela peut prendre du temps, en particulier si vous avez beaucoup de machines virtuelles...This can be time-consuming, especially if you have a lot of VMs... La mise à jour ou la mise à niveau des fichiers du système d’exploitation au sein d’un conteneur est la même :Updating or upgrading the operating system files within a container is the same:
  1. Modifiez le fichier de build de votre image conteneur (connu sous le nom de fichier dockerfile) pour pointer vers la dernière version de l’image de base Windows.Edit your container image's build file (known as a Dockerfile) to point to the latest version of the Windows base image.
  2. Régénérez votre image conteneur avec cette nouvelle image de base.Rebuild your container image with this new base image.
  3. Transmettent l’image conteneur à votre registre de conteneurs.Push the container image to your container registry.
  4. Redéploiement à l’aide d’un orchestrateur.Redeploy using an orchestrator.
    L’orchestrateur offre une automatisation puissante pour ce faire à grande échelle.The orchestrator provides powerful automation for doing this at scale. Pour plus d’informations, consultez Didacticiel : mettre à jour une application dans le service Azure Kubernetes.For details, see Tutorial: Update an application in Azure Kubernetes Service.
Stockage persistantPersistent storage Utiliser un disque dur virtuel (VHD) pour le stockage local pour une machine virtuelle unique, ou un partage de fichiers SMB pour le stockage partagé par plusieurs serveursUse a virtual hard disk (VHD) for local storage for a single VM, or an SMB file share for storage shared by multiple servers Utilisez des disques Azure pour le stockage local pour un seul nœud, ou Azure Files (partages SMB) pour le stockage partagé par plusieurs nœuds ou serveurs.Use Azure Disks for local storage for a single node, or Azure Files (SMB shares) for storage shared by multiple nodes or servers.
Équilibrage de chargeLoad balancing L’équilibrage de charge des ordinateurs virtuels déplace les machines virtuelles en cours d’exécution vers d’autres serveurs dans un cluster de basculement.Virtual machine load balancing moves running VMs to other servers in a failover cluster. Les conteneurs eux-mêmes ne sont pas déplacés ; au lieu de cela, un orchestrateur peut démarrer ou arrêter automatiquement des conteneurs sur des nœuds de cluster pour gérer les modifications de charge et de disponibilité.Containers themselves don't move; instead an orchestrator can automatically start or stop containers on cluster nodes to manage changes in load and availability.
Tolérance de panneFault tolerance Les machines virtuelles peuvent basculer vers un autre serveur dans un cluster, avec le redémarrage du système d’exploitation de la machine virtuelle sur le nouveau serveur.VMs can fail over to another server in a cluster, with the VM's operating system restarting on the new server. En cas de défaillance d’un nœud de cluster, tous les conteneurs en cours d’exécution sont recréés rapidement par l’orchestrateur sur un autre nœud de cluster.If a cluster node fails, any containers running on it are rapidly recreated by the orchestrator on another cluster node.
Mise en réseauNetworking Utilise des cartes réseau virtuelles.Uses virtual network adapters. Utilise une vue isolée d’une carte réseau virtuelle, ce qui fournit un peu moins de virtualisation : le pare-feu de l’ordinateur hôte est partagé avec des conteneurs, tout en utilisant moins de ressources.Uses an isolated view of a virtual network adapter, providing a little less virtualization–the host's firewall is shared with containers–while using less resources. Pour plus d’informations, consultez Windows Container Networking.For more, see Windows container networking.