Windows et conteneurs

S’applique à : Windows Server 2022, Windows Server 2019, Windows Server 2016

Les conteneurs constituent une technologie d’empaquetage et d’exécution d’applications Windows et Linux, dans le cloud et divers environnements locaux. Les conteneurs offrent un environnement léger et isolé qui simplifie le développement, le déploiement et la gestion des applications. 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. 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.

Graphic showing how containers can run in the cloud or on-premises, supporting monolithic apps or microservices written in nearly any language.

Pour voir une feuille de route des fonctionnalités actuellement disponibles et planifiées, consultez la feuille de route des conteneurs Windows Server. Consultez également Événements pour voir les dernières présentations vidéo et les billets de blog sur les conteneurs Windows.

L’écosystème des conteneurs Microsoft

Microsoft fournit un certain nombre d’outils et de plateformes pour vous aider à développer et déployer des applications dans des conteneurs :

  • 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. Vous pouvez également exécuter des conteneurs en mode natif sur 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.

  • 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.

  • Déployez des conteneurs à grande échelle sur Azure ou d’autres 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.
    • 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. 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).
  • Déployez des conteneurs locaux en utilisant AKS sur Azure Stack HCI, Azure Stack avec le moteur AKS ou Azure Stack avec 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.

Fonctionnement des conteneurs

Un conteneur est un package isolé et léger qui permet d’exécuter une application sur le système d’exploitation hôte. Les conteneurs s’appuient sur le noyau du système d’exploitation hôte (qui peut être considéré comme la tuyauterie invisible du système d’exploitation), tel qu’illustré dans le diagramme ci-dessous.

Architectural diagram showing how containers run on top of the kernel

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. Le conteneur récupère plutôt une vue isolée, et virtualisée dans certains cas, du système. 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. Pour enregistrer des données, le conteneur peut monter un stockage persistant, comme un disque Azure ou un partage de fichiers (notamment 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. É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. 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. Nous aborderons les images conteneur plus en détail ultérieurement.

Conteneurs ou machines virtuelles

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.

Architectural diagram showing how VMs run a complete operating system beside the host operating system

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.

Pour de plus amples informations sur les similitudes et les différences entre ces technologies complémentaires, consultez Conteneurs ou machines virtuelles.

Images de conteneur

Tous les conteneurs sont créés à partir d’images conteneur. 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. L’image conteneur se compose des fichiers du système d’exploitation en mode utilisateur indispensables à la prise en charge 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.

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 :

  • Windows : l’ensemble complet des services système (moins les rôles serveur) et API Windows.
  • Windows Server : l’ensemble complet des services système et des API Windows.
  • Windows Server Core : une image plus petite qui contient un sous-ensemble des API Windows Server, c’est-à-dire le .NET Framework complet. Il inclut également la plupart des rôles serveur, mais pas tous (par exemple, Serveur de télécopie n’est pas compris).
  • Nano Server : la plus petite image Windows Server, qui inclut la prise en charge des API .NET Core et de certains rôles serveur.

Comme cela a été mentionné précédemment, les images conteneur sont composées d’une série de couches. Chaque couche contient un ensemble de fichiers qui, lorsqu’ils sont superposés, représentent votre image conteneur. 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. Vous pouvez également cibler une autre image contenant déjà l’infrastructure de votre choix. Par exemple, l’équipe .NET publie une image .NET Core qui comporte le runtime .NET Core. 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. L’image .NET Core elle-même est basée sur Nano Server.

Pour plus d’informations, consultez Images de base de conteneur.

Utilisateurs de conteneur

Conteneurs pour les développeurs

Les conteneurs aident les développeurs à générer et à livrer des applications de meilleure qualité, plus rapidement. 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. 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.

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. 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. 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. L’avantage le plus utile pour les développeurs est peut-être la possibilité d’isoler l’environnement afin que l’application récupère toujours la version spécifiée des bibliothèques, en évitant les conflits avec les dépendances.

Conteneurs pour les professionnels de l’informatique

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. 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. 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.

Vous pouvez également utiliser le mode interactif des conteneurs pour exécuter les instances conflictuelles d’un outil en ligne de commande sur le même système.

Orchestration de conteneurs

Les orchestrateurs constituent un élément essentiel de l’infrastructure lors de la configuration d’un environnement basé sur conteneur. 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.

Les orchestrateurs de conteneurs ont été créés pour faciliter la gestion des conteneurs, à grande échelle et en production. Les orchestrateurs offrent les fonctionnalités suivantes :

Les orchestrateurs permettent de développer des applications conteneurisées à grande échelle, en fournissant les fonctionnalités suivantes :

  • Déploiement à grande échelle
  • Planification de la charge de travail
  • Analyse de l'intégrité
  • Basculement en cas de défaillance d’un nœud
  • Possibilité d’effectuer des scale-up ou scale-down
  • Mise en réseau
  • Détection du service
  • Coordination des mises à niveau d’applications
  • Affinité de nœud de cluster

Les différents orchestrateurs que vous pouvez utiliser avec les conteneurs Windows sont nombreux. Voici les options que Microsoft fournit :

Essayer les conteneurs sur Windows

Pour vous familiariser avec les conteneurs sur Windows Server ou Windows 10, consultez :

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.

Ressources

Pour voir les ressources sur l’utilisation de conteneurs Windows Server :