Visual Studio Container Tools pour Docker

S’applique à :ouiVisual Studio nonVisual Studio pour Mac nonVisual Studio Code

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 pour les applications en conteneur. Vous pouvez utiliser un conteneur pour un projet unique ou utiliser l’orchestration de conteneurs avec Docker Compose ou Service Fabric pour travailler avec 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 de Docker est disponible. Les projets d’application console .NET Framework ne prennent pas en charge l’option Ajouter une prise en charge docker une fois le projet créé. Après la création, les projets de console .NET Framework ou .NET Core prennent en charge l’option Ajouter une prise en charge de Container Orchestrator à l’aide de Service Fabric ou docker Compose.

Dans Visual Studio 2019 version 16.4 et ultérieure, la fenêtre Conteneurs est disponible, ce qui 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 la fenêtre Utiliser les 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.

Avec Visual Studio 2022, vous pouvez utiliser Docker Compose ou Service Fabric comme services d’orchestration de conteneurs.

Notes

Si vous utilisez le modèle de projet de console .NET Framework complet, l’option prise en charge est Ajouter la prise en charge d’Container Orchestrator 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 seul projet sans orchestration ne sont pas disponibles.

Dans Visual Studio 2022, la fenêtre Conteneurs est disponible, ce qui 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 la fenêtre Utiliser les conteneurs.

Notes

Les exigences de licence de Docker peuvent être différentes pour différentes versions de Docker Desktop. Reportez-vous à la documentation Docker pour comprendre les exigences 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 la nouvelle application web ASP.NET Core dans Visual Studio.

Capture d’écran montrant comment activer la prise en charge de Docker pour la 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 la>prise en charge de Docker dans Explorateur de solutions. Les commandes Add Docker Support and Add >> Container Orchestrator Support se trouvent dans le menu contextuel (ou menu contextuel) du nœud de projet pour un projet ASP.NET Core dans 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.

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 ressemble au code suivant. Dans cet exemple, le projet a été nommé WebApplication-Dockeret 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"]
#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"]

Utiliser la fenêtre Conteneurs

La fenêtre Conteneurs vous permet d’afficher des conteneurs et des 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 placer la fenêtre quelque part. En raison de la largeur de la fenêtre, il fonctionne mieux lorsqu’il est ancré 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 la fenêtre Utiliser les conteneurs.

Prise en charge de Docker Compose

Lorsque vous souhaitez composer une solution multiconteneur à l’aide de Docker Compose, ajoutez la prise en charge de l’orchestrateur 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 de l’orchestrateur de conteneurs à l’aide de Docker Compose, cliquez avec le bouton droit sur le nœud du projet dans Explorateur de solutions, puis choisissez Ajouter la > prise en charge d’Orchestrator de conteneur. Choisissez ensuite Docker Compose pour gérer les conteneurs.

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

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

Capture d’écran des fichiers Docker dans Explorateur de solutions dans 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 travaillez avec un grand nombre de services, vous pouvez gagner du temps et calculer des ressources 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.

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 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 obtenir un tutoriel détaillé, consultez Tutoriel : Déployer une application .NET dans un conteneur Windows sur 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 sur 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 dans un registre de conteneurs à l’aide de Visual Studio