Partager via


Outils de conteneur Visual Studio pour Docker

Les outils inclus dans Visual Studio pour le développement avec des conteneurs Docker sont faciles à utiliser et simplifient considérablement la création, le débogage et le déploiement d’applications conteneurisées. Vous pouvez utiliser un conteneur pour un projet individuel ou opter pour une orchestration de conteneur avec Docker Compose ou Service Fabric afin d’utiliser plusieurs services dans des conteneurs.

Prérequis

Prise en charge de Docker dans Visual Studio

La prise en charge de Docker est disponible pour les projets ASP.NET, les projets ASP.NET Core, et les projets de console .NET Core et .NET Framework.

La prise en charge de Docker dans Visual Studio a été modifiée sur un certain nombre de versions pour répondre aux besoins des clients. Il existe deux niveaux de prise en charge de Docker que vous pouvez ajouter à un projet, et les options prises en charge varient selon le type de projet et la version de Visual Studio. Pour certains types de projets pris en charge, si vous souhaitez utiliser un conteneur dans un seul projet, sans orchestration, ajoutez la prise en charge de Docker. Le niveau suivant est la prise en charge de l’orchestration de conteneur, qui ajoute les fichiers de prise en charge appropriés pour l’orchestrateur spécifique que vous choisissez.

Visual Studio 2019 vous permet d’utiliser Docker Compose, Kubernetes et Service Fabric comme services d’orchestration de conteneur.

Notes

Lors de la création d’un projet de console .NET Framework ou .NET Core, il n’existe aucune option permettant d’ajouter la prise en charge de Docker. Une fois qu’un projet d’application console .NET Core est créé, l’option Ajouter la prise en charge Docker est disponible. Les projets d’application console .NET Framework ne prennent pas en charge l’option Ajouter la prise en charge Docker une fois que le projet a été créé. Après leur création, les projets de console .NET Framework et .NET Core prennent en charge l’option Ajouter la prise en charge des orchestrateurs de conteneurs à l’aide de Service Fabric ou de Docker Compose.

Dans Visual Studio 2019 version 16.4 et versions ultérieures, la fenêtre Conteneurs vous permet d’afficher les conteneurs en cours d’exécution, de parcourir les images disponibles, d’afficher les variables d’environnement, les journaux et les mappages de ports, d’inspecter le système de fichiers, d’attacher un débogueur ou d’ouvrir une fenêtre de terminal à l’intérieur de l’environnement de conteneur. Consultez Utiliser la fenêtre Conteneurs.

Prérequis

Prise en charge de Docker dans Visual Studio

La prise en charge de Docker est disponible pour les projets ASP.NET, les projets ASP.NET Core, et les projets de console .NET Core et .NET Framework.

La prise en charge de Docker dans Visual Studio a été modifiée sur un certain nombre de versions pour répondre aux besoins des clients. Il existe plusieurs options pour ajouter la prise en charge de Docker à un projet, et les options prises en charge varient en fonction du type de projet et de la version de Visual Studio. Pour certains types de projets pris en charge, si vous souhaitez utiliser un conteneur dans un seul projet, sans orchestration, ajoutez la prise en charge de Docker. Le niveau suivant est la prise en charge de l’orchestration de conteneur, qui ajoute les fichiers de prise en charge appropriés pour l’orchestrateur spécifique que vous choisissez.

Avec Visual Studio 2022 version 17.9 et ultérieures, lorsque vous ajoutez la prise en charge de Docker à un projet .NET 7 ou ultérieur, vous avez le choix entre deux types de build de conteneur pour ajouter la prise en charge de Docker. Vous pouvez choisir d’ajouter un Dockerfile pour spécifier comment générer les images conteneur, ou d’utiliser la prise en charge de conteneur intégrée fournie par le Kit de développement logiciel (SDK) .NET.

En outre, avec Visual Studio 2022 et versions ultérieures, lorsque vous choisissez l’orchestration de conteneurs, vous pouvez utiliser Docker Compose ou Service Fabric comme services d’orchestration de conteneurs.

Remarque

Si vous utilisez le modèle de projet de console .NET Framework complet, l’option prise en charge est Ajouter la prise en charge des orchestrateurs de conteneurs après la création du projet, avec des options permettant d’utiliser Service Fabric ou Docker Compose. L’ajout de la prise en charge lors de la création du projet et l’ajout de la prise en charge de Docker pour un projet individuel sans orchestration ne sont pas des options disponibles.

Dans Visual Studio 2022, la fenêtre Conteneurs vous permet d’afficher les conteneurs en cours d’exécution, de parcourir les images disponibles, d’afficher les variables d’environnement, les journaux et les mappages de ports, d’inspecter le système de fichiers, d’attacher un débogueur ou d’ouvrir une fenêtre de terminal à l’intérieur de l’environnement de conteneur. Consultez Utiliser la fenêtre Conteneurs.

Notes

Les exigences de licence de Docker peuvent être différentes pour les différentes versions de Docker Desktop. Reportez-vous à la documentation Docker pour comprendre les conditions de licence actuelles pour l’utilisation de votre version de Docker Desktop pour le développement dans votre situation.

Ajout de la prise en charge de Docker

Vous pouvez activer la prise en charge de Docker lors de la création d’un projet en sélectionnant Activer la prise en charge de Docker, comme illustré dans la capture d’écran suivante :

Capture d’écran montrant comment activer la prise en charge de Docker pour une nouvelle application web ASP.NET Core dans Visual Studio

Capture d’écran montrant comment activer la prise en charge de Docker pour une nouvelle application web ASP.NET Core dans Visual Studio

Notes

Pour les projets .NET Framework (pas .NET Core), seuls les conteneurs Windows sont disponibles.

Vous pouvez ajouter la prise en charge de Docker à un projet existant en sélectionnant Ajouter>Prise en charge de Docker dans l’Explorateur de solutions. Les commandes Ajouter > Prise en charge de Docker et Ajouter > Prise en charge des orchestrateurs de conteneurs se trouvent dans le menu contextuel (clic droit) du nœud du projet pour un projet ASP.NET Core dans l’Explorateur de solutions, comme illustré dans la capture d’écran suivante :

Capture d’écran montrant comment ajouter l’option de menu Prise en charge de Docker dans Visual Studio

Capture d’écran montrant comment ajouter l’option de menu Prise en charge de Docker dans Visual Studio

Ajouter la prise en charge Docker

Lorsque vous ajoutez ou activez la prise en charge de Docker, Visual Studio ajoute les éléments suivants au projet :

  • un fichier Dockerfile
  • Un fichier .dockerignore
  • une référence de package NuGet pour Microsoft.VisualStudio.Azure.Containers.Tools.Targets

Le fichier Dockerfile que vous ajoutez ressemblera au code suivant. Dans cet exemple, le projet a été nommé WebApplication-Docker et vous avez choisi des conteneurs Linux :

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
WORKDIR /src
COPY ["WebApplication-Docker/WebApplication-Docker.csproj", "WebApplication-Docker/"]
RUN dotnet restore "WebApplication-Docker/WebApplication-Docker.csproj"
COPY . .
WORKDIR "/src/WebApplication-Docker"
RUN dotnet build "WebApplication-Docker.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebApplication-Docker.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication-Docker.dll"]

Ajouter la prise en charge de Docker à l’aide du type de build de conteneur Dockerfile

Lorsque vous ajoutez ou activez la prise en charge de Docker dans un projet .NET 7 ou version ultérieure, Visual Studio affiche la boîte de dialogue Options de vue de structure de conteneur, qui vous donne le choix du système d’exploitation (Linux ou Windows), mais également la capacité à choisir le type de build de conteneur, Dockerfile ou SDK .NET. Cette boîte de dialogue n'apparaît pas dans les projets .NET Framework ou Azure Functions.

Dans les versions 17.11 et ultérieures, vous pouvez également spécifier la distribution de l'image de conteneur et le contexte de construction de Docker.

Capture d'écran montrant la boîte de dialogue Options d'échafaudage de conteneurs pour l'ajout de la prise en charge de Docker.

Distro de l'image du conteneur spécifie l'image du système d'exploitation que vos conteneurs utilisent comme image de base. Cette liste change si vous passez de Linux à Windows en tant que type de conteneur.

Les images suivantes sont disponibles :

Windows :

Linux :

  • Default (Debian, mais la balise est « 8.0 »)
  • Debian
  • Ubuntu
  • Ubuntu ciselé
  • Alpine

Remarque

Les conteneurs basés sur l'image Chiseled Ubuntu et qui utilisent le déploiement natif AOT (Ahead-of-time) ne peuvent être débogués qu'en mode rapide. Voir Personnaliser des conteneurs Docker dans Visual Studio.

Contexte de construction Docker spécifie le dossier utilisé pour la construction Docker. Voir Contexte de build Docker. Le dossier par défaut est le dossier solution, ce qui est fortement recommandé. Tous les fichiers nécessaires à la construction doivent se trouver dans ce dossier, ce qui n'est généralement pas le cas si vous choisissez le dossier project ou un autre dossier.

Si vous choisissez Dockerfile, Visual Studio ajoute ce qui suit au projet :

  • un fichier Dockerfile
  • un fichier .dockerignore
  • une référence de package NuGet pour Microsoft.VisualStudio.Azure.Containers.Tools.Targets

Le fichier Dockerfile que vous ajoutez ressemblera au code suivant. Dans cet exemple, le projet a été nommé WebApplication-Docker et vous avez choisi des conteneurs Linux :

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["WebApplication-Docker/WebApplication-Docker.csproj", "WebApplication-Docker/"]
RUN dotnet restore "WebApplication-Docker/WebApplication-Docker.csproj"
COPY . .
WORKDIR "/src/WebApplication-Docker"
RUN dotnet build "WebApplication-Docker.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebApplication-Docker.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication-Docker.dll"]

Conteneuriser une application .NET sans Dockerfile

Avec Visual Studio 2022 17.9 et versions ultérieures avec le kit SDK .NET 7 installé, dans les projets ASP.NET Core qui ciblent .NET 6 ou version ultérieure, vous avez la possibilité d’utiliser la prise en charge intégrée du kit SDK .NET pour les builds de conteneur, ce qui signifie que vous n’avez pas besoin d’un Dockerfile ; consultez Conteneuriser une application .NET avec dotnet publish. Au lieu de cela, vous configurez vos conteneurs à l’aide de propriétés MSBuild dans le fichier projet, et les paramètres de lancement des conteneurs avec Visual Studio sont encodés dans un fichier de configuration .json, launchSettings.json.

Capture d'écran montrant la boîte de dialogue Options d'échafaudage de conteneurs pour l'ajout de la prise en charge de Docker avec .NET SDK sélectionné comme type de construction de conteneur.

Ici, choisissez .NET SDK comme type de construction de conteneur pour utiliser la gestion de conteneur de .NET SDK au lieu d'un fichier Docker.

Distro de l'image du conteneur spécifie l'image du système d'exploitation que vos conteneurs utilisent comme image de base. Cette liste change si vous passez de Linux à Windows en tant que conteneur. Consultez la section précédente pour obtenir la liste des images disponibles.

L’entrée de build de conteneur du kit SDK .NET lors dans launchSettings.json ressemble au code suivant :

"Container (.NET SDK)": {
  "commandName": "SdkContainer",
  "launchBrowser": true,
  "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
  "environmentVariables": {
    "ASPNETCORE_HTTPS_PORTS": "8081",
    "ASPNETCORE_HTTP_PORTS": "8080"
  },
  "publishAllPorts": true,
  "useSSL": true
}

Le SDK .NET gère certains paramètres qui auraient été encodés dans un fichier Docker, tels que l'image de base du conteneur et les variables d'environnement à définir. Les paramètres disponibles dans le fichier projet pour la configuration du conteneur sont répertoriés dans Personnalisation de votre conteneur. Par exemple, la distribution de l'image du conteneur est enregistrée dans le fichier de projet en tant que propriété ContainerBaseImage. Vous pouvez les modifier ultérieurement en éditant le fichier de projet.

<PropertyGroup>
    <ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>

Utiliser la fenêtre Conteneurs

La fenêtre Conteneurs vous permet d’afficher les conteneurs et les images sur votre ordinateur et de voir ce qui se passe avec eux. Vous pouvez afficher le système de fichiers, les volumes montés, les variables d’environnement, les ports utilisés et examiner les fichiers journaux.

Ouvrez la fenêtre Conteneurs en utilisant le lancement rapide (Ctrl+Q) et en tapant containers. Vous pouvez utiliser les contrôles d’ancrage pour repositionner la fenêtre. En raison de sa largeur, la fenêtre fonctionne mieux quand elle est ancrée en bas de l’écran.

Sélectionnez un conteneur et utilisez les onglets pour afficher les informations disponibles. Pour l’extraire, exécutez votre application avec Docker, ouvrez l’onglet Fichiers et développez le dossier de l’application pour voir votre application déployée sur le conteneur.

Capture d’écran de la fenêtre Conteneurs

Capture d’écran de la fenêtre Conteneurs

Pour plus d’informations, consultez Utiliser la fenêtre Conteneurs.

Prise en charge de Docker Compose

Pour composer une solution à plusieurs conteneurs avec Docker Compose, ajoutez la prise en charge des orchestrateurs de conteneurs à vos projets. Cela vous permet d’exécuter et de déboguer simultanément un groupe de conteneurs (une solution complète ou un groupe de projets), si ces conteneurs sont définis dans le même fichier docker-compose.yml.

Pour ajouter la prise en charge des orchestrateurs de conteneurs à l’aide de Docker Compose, cliquez avec le bouton droit sur le nœud du projet dans l’Explorateur de solutions et choisissez Ajouter > Prise en charge des orchestrateurs de conteneurs. Choisissez ensuite Docker Compose pour gérer les conteneurs.

Après avoir ajouté la prise en charge des orchestrateurs de conteneurs à votre projet, vous voyez qu’un fichier Dockerfile a été ajouté au projet (s’il n’y figurait pas déjà auparavant) et qu’un dossier docker-compose a été ajouté à la solution dans l’Explorateur de solutions, comme illustré ici :

Capture d’écran des fichiers Docker dans l’Explorateur de solutions de Visual Studio

Capture d’écran des fichiers Docker dans l’Explorateur de solutions de Visual Studio

Si le fichier docker-compose.yml existe déjà, Visual Studio ajoute simplement les lignes de code de configuration requises.

Répétez le processus avec les autres projets que vous souhaitez contrôler à l’aide de Docker Compose.

Si vous utilisez un grand nombre de services, vous pouvez économiser du temps et des ressources informatiques en sélectionnant le sous-ensemble de services que vous souhaitez démarrer dans votre session de débogage. Consultez Démarrer un sous-ensemble de services Compose.

Remarque

Remarquez que les hôtes Docker distants ne sont pas pris en charge dans l’outillage Visual Studio.

Prise en charge de Service Fabric

Grâce aux outils Service Fabric dans Visual Studio, vous pouvez développer et déboguer pour Azure Service Fabric, mais aussi exécuter et déboguer localement et déployer sur Azure.

Visual Studio 2019 et les versions ultérieures prennent en charge le développement de microservices conteneurisés à l’aide de conteneurs Windows et de l’orchestration Service Fabric.

Pour bénéficier d’un didacticiel détaillé, consultez Tutoriel : Déployer une application .NET dans un conteneur Windows vers Azure Service Fabric.

Pour plus d’informations sur Azure Service Fabric, consultez Service Fabric.

Livraison continue et intégration continue (CI/CD)

Visual Studio s’intègre facilement à Azure Pipelines pour offrir une intégration et une livraison continues et automatisées des modifications apportées au code et la configuration de votre service. Pour commencer, consultez Créer votre premier pipeline.

Pour Service Fabric, consultez Tutoriel : Déployer votre application ASP.NET Core dans Azure Service Fabric à l’aide d’Azure DevOps Projects.

Étapes suivantes

Pour plus d’informations sur l’implémentation des services et l’utilisation des outils Visual Studio avec des conteneurs, lisez les articles suivants :

Débogage d’applications dans un conteneur Docker local

Déployer un conteneur ASP.NET sur un registre de conteneurs avec Visual Studio