Windows et conteneursWindows and containers

Les conteneurs constituent une technologie d’empaquetage et d’exécution d’applications Windows et Linux, dans le cloud et divers environnements locaux.Containers are a technology for packaging and running Windows and Linux applications across diverse environments on-premises and in the cloud. Les conteneurs offrent un environnement léger et isolé qui simplifie le développement, le déploiement et la gestion des applications.Containers provide a lightweight, isolated environment that makes apps easier to develop, deploy, and manage. Les conteneurs démarrent et s’arrêtent rapidement, ce qui les rend idéaux pour les applications qui doivent s’adapter promptement à l’évolution de la demande.Containers start and stop quickly, making them ideal for apps that need to rapidly adapt to changing demand. La nature légère du conteneur en fait également un outil pratique qui permet d’accroître la densité et l’utilisation de votre infrastructure.The lightweight nature of containers also make them a useful tool for increasing the density and utilization of your infrastructure.

Graphique illustrant la façon dont les conteneurs peuvent s’exécuter dans le cloud ou localement, en prenant en charge des applications monolithiques ou des microservices écrits dans pratiquement n’importe quel langage.

L’écosystème des conteneurs MicrosoftThe Microsoft container ecosystem

Microsoft fournit un certain nombre d’outils et de plateformes pour vous aider à développer et déployer des applications dans des conteneurs :Microsoft provides a number of tools and platforms to help you develop and deploy apps in containers:

  • Exécutez des conteneurs Windows ou Linux sur Windows 10 à des fins de développement et de test avec Docker Desktop, ce qui vous permet d’utiliser les fonctionnalités de conteneurs intégrées à Windows.Run Windows-based or Linux-based containers on Windows 10 for development and testing using Docker Desktop, which makes use of containers functionality built-in to Windows. Vous pouvez également exécuter des conteneurs en mode natif sur Windows Server.You can also run containers natively on Windows Server.

  • Développez, testez, publiez et déployez des conteneurs Windows avec une prise en charge solide des conteneurs dans Visual Studio et Visual Studio Code, ce qui inclut la prise en charge de Docker, Docker Compose, Kubernetes, Helm et d’autres technologies avantageuses.Develop, test, publish, and deploy Windows-based containers using the powerful container support in Visual Studio and Visual Studio Code, which include support for Docker, Docker Compose, Kubernetes, Helm, and other useful technologies.

  • Publiez vos applications sous forme d’images conteneur sur l’instance DockerHub publique afin que d’autres personnes puissent les utiliser, ou sur une instance Azure Container Registry privée pour le développement et déploiement de votre propre organisation, en procédant à l’envoi (push) et au tirage (pull) directement à partir de Visual Studio et de Visual Studio Code.Publish your apps as container images to the public DockerHub for others to use, or to a private Azure Container Registry for your org's own development and deployment, pushing and pulling directly from within Visual Studio and Visual Studio Code.

  • Déployez des conteneurs à grande échelle sur Azure ou d’autres clouds :Deploy containers at scale on Azure or other clouds:

    • Tirez (pull) votre application (image conteneur) d’un registre de conteneurs comme Azure Container Registry, puis déployez-la et gérez-la à grande échelle avec un orchestrateur comme Azure Kubernetes Service (AKS) ou Azure Fabric Service.Pull your app (container image) from a container registry, such as the Azure Container Registry, and then deploy and manage it at scale using an orchestrator such as Azure Kubernetes Service (AKS) or Azure Service Fabric.
    • Azure Fabric Service déploie des conteneurs sur des machines virtuelles Azure et les gère à grande échelle, qu’il s’agisse de douzaines, de centaines, voire de milliers de conteneurs.Azure Kubernetes Service deploys containers to Azure virtual machines and manages them at scale, whether that's dozens of containers, hundreds, or even thousands. Les machines virtuelles Azure exécutent une image Windows Server personnalisée (si vous déployez une application Windows) ou une image Ubuntu Linux personnalisée (si vous déployez une application Linux).The Azure virtual machines run either a customized Windows Server image (if you're deploying a Windows-based app), or a customized Ubuntu Linux image (if you're deploying a Linux-based app).
  • Déployez des conteneurs locaux au moyen d’Azure Stack avec le moteur AKS (en préversion pour des conteneurs Linux) ou d’Azure Stack avec OpenShift.Deploy containers on-premises by using Azure Stack with the AKS Engine (in preview with Linux containers) or Azure Stack with OpenShift. Vous pouvez également configurer Kubernetes vous-même sur Windows Server (voir Kubernetes sur Windows) ; nous travaillons également sur la prise en charge de l’exécution des conteneurs Windows sur RedHat OpenShift Container Platform.You can also set up Kubernetes yourself on Windows Server (see Kubernetes on Windows), and we're working on support for running Windows containers on RedHat OpenShift Container Platform as well.

Fonctionnement des conteneursHow containers work

Un conteneur est un silo léger et isolé qui permet 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 s’appuient sur le noyau du système d’exploitation hôte (qui peut être considéré comme la plomberie enfouie du système d’exploitation), tel qu’illustré dans ce schéma.Containers build on top of the host operating system's kernel (which can be thought of as the buried plumbing of the operating system), as shown in this diagram.

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

Bien qu’un conteneur partage le noyau du système d’exploitation hôte, il n’obtient pas un accès sans limites à celui-ci.While a container shares the host operating system's kernel, the container doesn't get unfettered access to it. Le conteneur récupère plutôt une vue isolée, et virtualisée dans certains cas, du système.Instead, the container gets an isolated–and in some cases virtualized–view of the system. Par exemple, un conteneur peut accéder à une version virtualisée du système de fichiers et du Registre, mais les modifications effectuées n’affectent que le conteneur et sont ignorées lorsqu’il s’arrête.For example, a container can access a virtualized version of the file system and registry, but any changes affect only the container and are discarded when it stops. Pour enregistrer des données, le conteneur peut monter un stockage persistant, comme un disque Azure ou un partage de fichiers (notamment Azure Files).To save data, the container can mount persistent storage such as an Azure Disk or a file share (including Azure Files).

Un conteneur s’appuie sur le noyau, mais le noyau ne fournit pas tous les services et les API qui sont nécessaires à une application pour s’exécuter : la plupart de ces besoins sont pourvus par les fichiers système (bibliothèques) qui s’exécutent au-dessus du noyau en mode utilisateur.A container builds on top of the kernel, but the kernel doesn't provide all of the APIs and services an app needs to run–most of these are provided by system files (libraries) that run above the kernel in user mode. Étant donné qu’un conteneur est isolé de l’environnement du mode utilisateur de l’hôte, il a besoin de sa propre copie des fichiers système en mode utilisateur ; ceux-ci sont empaquetés dans un fichier appelé image de base.Because a container is isolated from the host's user mode environment, the container needs its own copy of these user mode system files, which are packaged into something known as a base image. L’image de base sert de couche primordiale sur laquelle est construit votre conteneur, en lui fournissant des services de système d’exploitation non pourvus par le noyau.The base image serves as the foundational layer upon which your container is built, providing it with operating system services not provided by the kernel. Nous aborderons les images conteneur plus en détail ultérieurement.But we'll talk more about container images later.

Conteneurs ou machines virtuellesContainers vs. virtual machines

Contrairement à un conteneur, une machine virtuelle exécute un système d’exploitation complet, y compris son propre noyau, comme illustré dans ce schéma.In contrast to a container, a virtual machine (VMs) runs a complete operating system–including its own kernel–as shown in this diagram.

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

Les conteneurs et les machines virtuelles ont chacun leur utilisation propre : en fait, beaucoup de déploiements de conteneurs utilisent les machines virtuelles comme système d’exploitation hôte au lieu de s’exécuter directement sur le matériel, surtout lors de l’exécution de conteneurs dans le cloud.Containers and virtual machines each have their uses–in fact, many deployments of containers use virtual machines as the host operating system rather than running directly on the hardware, especially when running containers in the cloud.

Pour de plus amples informations sur les similitudes et les différences entre ces technologies complémentaires, consultez Conteneurs ou machines virtuelles.For more details on the similarities and differences of these complementary technologies, see Containers vs. virtual machines.

Images de conteneurContainer images

Tous les conteneurs sont créés à partir d’images conteneur.All containers are created from container images. Une image conteneur est un ensemble de fichiers organisés en une pile de couches résidant sur votre machine locale, ou dans un registre de conteneurs distant.Container images are a bundle of files organized into a stack of layers that reside on your local machine or in a remote container registry. L’image conteneur se compose des fichiers du système d’exploitation en mode utilisateur indispensables à la prise en charge de votre application, de votre application, des runtimes ou dépendances de votre application, ainsi que de tout autre fichier de configuration diverse dont votre application a besoin pour s’exécuter correctement.The container image consists of the user mode operating system files needed to support your app, your app, any runtimes or dependencies of your app, and any other miscellaneous configuration file your app needs to run properly.

Microsoft propose plusieurs images (appelées images de base) que vous pouvez utiliser comme point de départ pour créer votre propre image conteneur :Microsoft offers several images (called base images) that you can use as a starting point to build your own container image:

  • Windows : l’ensemble complet des services système (moins les rôles serveur) et API Windows.Windows - contains the full set of Windows APIs and system services (minus server roles).
  • Windows Server Core : une image plus petite qui contient un sous-ensemble des API Windows Server, c’est-à-dire le .NET Framework complet.Windows Server Core - a smaller image that contains a subset of the Windows Server APIs–namely the full .NET framework. Il comprend également la plupart des rôles de serveur, bien que malheureusement trop peu nombreux, et pas Serveur de télécopie.It also includes most server roles, though sadly to few, not Fax Server.
  • Nano Server : la plus petite image Windows Server, avec la prise en charge des API .NET Core et de certains rôles de serveur.Nano Server - the smallest Windows Server image, with support for the .NET Core APIs and some server roles.
  • Windows 10 IoT Standard : une version de Windows utilisée par les fabricants de matériel pour les petits appareils Internet des objets qui exécutent des processeurs ARM ou x86/x64.Windows 10 IoT Core - a version of Windows used by hardware manufacturers for small Internet of Things devices that run ARM or x86/x64 processors.

Comme cela a été mentionné précédemment, les images conteneur sont composées d’une série de couches.As mentioned earlier, container images are composed of a series of layers. Chaque couche contient un ensemble de fichiers qui, lorsqu’ils sont superposés, représentent votre image conteneur.Each layer contains a set of files that, when overlaid together, represent your container image. Du fait de la nature en couches des conteneurs, vous n’êtes pas obligé de toujours cibler une image de base pour créer un conteneur Windows.Because of the layered nature of containers, you don't have to always target a base image to build a Windows container. Vous pouvez également cibler une autre image contenant déjà l’infrastructure de votre choix.Instead, you could target another image that already carries the framework you want. Par exemple, l’équipe .NET publie une image .NET Core qui comporte le runtime .NET Core.For example, the .NET team publishes a .NET core image that carries the .NET core runtime. Elle évite aux utilisateurs de devoir dupliquer le processus d’installation de .NET Core : ils peuvent, à la place, réutiliser les couches de cette image conteneur.It saves users from needing to duplicate the process of installing .NET core–instead they can reuse the layers of this container image. L’image .NET Core elle-même est basée sur Nano Server.The .NET core image itself is built based upon Nano Server.

Pour plus d’informations, consultez Images de base de conteneur.For more details, see Container Base Images.

Utilisateurs de conteneurContainer users

Conteneurs pour les développeursContainers for developers

Les conteneurs aident les développeurs à générer et à livrer des applications de meilleure qualité, plus rapidement.Containers help developers build and ship higher-quality apps, faster. Avec les conteneurs, les développeurs peuvent créer une image conteneur qui se déploie en quelques secondes, de la même manière dans plusieurs environnements.With containers, developers can create a container image that deploys in seconds, identically across environments. Les conteneurs jouent le rôle de mécanisme simple permettant de partager du code entre des équipes, et de démarrer un environnement de développement sans impacter le système de fichiers de votre hôte.Containers act as an easy mechanism to share code across teams and to bootstrap a development environment without impacting your host filesystem.

Les conteneurs sont portables et polyvalents, ils peuvent exécuter des applications écrites dans n’importe quel langage et sont compatibles avec toute machine exécutant Windows 10, version 1607 ou ultérieure, et Windows Server 2016 ou ultérieur.Containers are portable and versatile, can run apps written in any language, and they're compatible with any machine running Windows 10, version 1607 or later, or Windows Server 2016 or later. Les développeurs peuvent créer et tester localement un conteneur sur leur ordinateur portable ou leur appareil de bureau, puis déployer cette même image conteneur sur le cloud privé de leur société, cloud public ou fournisseur de services.Developers can create and test a container locally on their laptop or desktop, and then deploy that same container image to their company's private cloud, public cloud, or service provider. De nature agile, les conteneurs prennent en charge les modèles de développement d’applications modernes dans des environnements cloud, virtualisés et à grande échelle.The natural agility of containers supports modern app development patterns in large-scale, virtualized cloud environments.

Conteneurs pour les professionnels de l’informatiqueContainers for IT professionals

Les conteneurs permettent aux administrateurs de créer une infrastructure plus facile à mettre à jour et à gérer, et qui tire pleinement parti des ressources matérielles.Containers help admins create infrastructure that's easier to update and maintain, and that more fully utilizes hardware resources. Les professionnels de l’informatique peuvent utiliser des conteneurs pour fournir des environnements standardisés à leurs équipes de développement, d’assurance qualité et de production.IT professionals can use containers to provide standardized environments for their development, QA, and production teams. En utilisant des conteneurs, les administrateurs système font abstraction des différences dans les installations des systèmes d’exploitation et l’infrastructure sous-jacente.By using containers, systems administrators abstract away differences in operating system installations and the underlying infrastructure.

Orchestration de conteneursContainer orchestration

Les orchestrateurs constituent un élément essentiel de l’infrastructure lors de la configuration d’un environnement basé sur conteneur.Orchestrators are a critical piece of infrastructure when setting up a container-based environment. Même si vous pouvez gérer quelques conteneurs manuellement par l’intermédiaire de Docker et de Windows, les applications utilisent souvent cinq, dix, voire des centaines de conteneurs, et c’est là que les orchestrateurs entrent en jeu.While you can manage a few containers manually using Docker and Windows, apps often make use of five, ten, or even hundreds of containers, which is where orchestrators come in.

Les orchestrateurs de conteneurs ont été créés pour faciliter la gestion des conteneurs, à grande échelle et en production.Container orchestrators were built to help manage containers at scale and in production. Les orchestrateurs offrent les fonctionnalités suivantes :Orchestrators provide functionality for:

  • Déploiement à grande échelleDeploying at scale
  • Planification de la charge de travailWorkload scheduling
  • Analyse de l'intégritéHealth monitoring
  • Basculement en cas de défaillance d’un nœudFailing over when a node fails
  • Possibilité d’effectuer des scale-up ou scale-downScaling up or down
  • Mise en réseauNetworking
  • Détection du serviceService discovery
  • Coordination des mises à niveau d’applicationsCoordinating app upgrades
  • Affinité de nœud de clusterCluster node affinity

Les différents orchestrateurs que vous pouvez utiliser avec les conteneurs Windows sont nombreux. Voici les options que Microsoft fournit :There are many different orchestrators that you can use with Windows containers; here are the options Microsoft provides:

Essayer les conteneurs sur WindowsTry containers on Windows

Pour vous familiariser avec les conteneurs sur Windows Server ou Windows 10, consultez :To get started with containers on Windows Server or Windows 10, see the following:

Pour vous aider à choisir les services Azure les plus appropriés pour votre scénario, consultez Azure Container Services et Choisir les services Azure à utiliser pour héberger votre application.For help deciding which Azure services are right for your scenario, see Azure container services and Choosing what Azure services to use to host your application.