Visual Studio Container Tools 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 pour les applications conteneurisées. 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.
Conditions préalables
- Docker Desktop
- Visual Studio 2019 avec la charge de travail Développement web, Outils Azure et/ou la charge de travail Développement multiplateforme .NET Core installée
- Outils de développement .NET Core pour le développement avec .NET Core.
- Pour publier sur Azure Container Registry, un abonnement Azure. inscrivez-vous à un essai gratuit.
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 changé sur un certain nombre de versions en réponse 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. Avec certains types de projets pris en charge, si vous voulez simplement un conteneur pour un seul projet, sans utiliser l’orchestration, vous pouvez le faire en ajoutant la prise en charge de Docker. Le niveau suivant est la prise en charge de l’orchestration de conteneurs, qui ajoute les fichiers de support appropriés pour l’orchestrateur particulier que vous choisissez.
Avec Visual Studio 2019, vous pouvez utiliser Docker Compose, Kubernetes et Service Fabric comme services d’orchestration de conteneurs.
Remarque
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 de Docker une fois le projet 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 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 Utiliser la fenêtre Conteneurs.
Conditions préalables
- Docker Desktop
- Visual Studio 2022 avec la charge de travail Développement web, Outils Azure et/ou la charge de travail Développement .NET Desktop installée
- Pour publier sur Azure Container Registry, un abonnement Azure. inscrivez-vous à un essai gratuit.
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 changé sur un certain nombre de versions en réponse 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 selon le type de projet et la version de Visual Studio. Avec certains types de projets pris en charge, si vous voulez simplement un conteneur pour un seul projet, sans utiliser l’orchestration, vous pouvez le faire en ajoutant la prise en charge de Docker. Le niveau suivant est la prise en charge de l’orchestration de conteneurs, qui ajoute les fichiers de support appropriés pour l’orchestrateur particulier 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 deux types de build de conteneur à choisir pour ajouter la prise en charge de Docker. Vous pouvez choisir d’ajouter un fichier Dockerfile pour spécifier comment générer les images conteneur, ou vous pouvez choisir d’utiliser la prise en charge intégrée du conteneur 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 conteneur.
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 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 Utiliser la fenêtre Conteneurs.
Note
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 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 du projet en sélectionnant Activer le support Docker lors de la création d’un projet, comme illustré dans la capture d’écran suivante :
Remarque
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>support 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 :
Ajouter la prise en charge de 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 ressemble 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 ultérieur, Visual Studio affiche les options de génération de modèles de conteneur boîte de dialogue, ce qui vous donne le choix du système d’exploitation (Linux ou Windows), mais également la possibilité de 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 les projets Azure Functions.
Dans la version 17.11 et ultérieures, vous pouvez également spécifier la distribution d'image de conteneur et le contexte de build Docker .
Distribution d’Images Conteneur spécifie quelle image de système d'exploitation vos conteneurs utilisent comme image de base. Cette liste change si vous basculez entre Linux et Windows comme type de conteneur.
Les images suivantes sont disponibles :
Windows:
- Windows Nano Server (recommandé, disponible uniquement 8.0 et versions ultérieures, non prédéfinis pour déploiement natif avant-temps (AOT) projets)
- Windows Server Core (disponible uniquement 8.0 et versions ultérieures)
Linux:
- Par défaut (Debian, mais la balise est « 8.0 »)
- Debian
- Ubuntu
- Ubuntu ciselé
- Alpin
Remarque
Les conteneurs basés sur l’image Ubuntu chiselée et qui utilisent déploiement natif avant-temps (AOT) ne peuvent être débogués qu’en mode rapide. Consultez Personnaliser des conteneurs Docker dans Visual Studio.
contexte de build Docker spécifie le dossier utilisé pour la build Docker. Consultez le contexte du build Docker. La valeur par défaut est le dossier de solution, qui est fortement recommandé. Tous les fichiers nécessaires pour une build doivent se trouver sous ce dossier, ce qui n’est généralement pas le cas si vous choisissez le dossier du projet ou un autre dossier.
Si vous choisissez Dockerfile, 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-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 fichier Dockerfile
Avec Visual Studio 2022 17.9 et versions ultérieures avec le Kit de développement logiciel (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 de développement logiciel (SDK) .NET pour les builds de conteneur, ce qui signifie que vous n’avez pas besoin d’un fichier Dockerfile ; consultez Containerize d’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.
Ici, choisissez SDK .NET comme type de build de conteneur pour utiliser la gestion des conteneurs du Kit de développement logiciel (SDK) .NET au lieu d’un fichier Dockerfile.
Distribution d’Images Conteneur spécifie quelle image de système d'exploitation vos conteneurs utilisent comme image de base. Cette liste change si vous basculez entre Linux et Windows en tant que conteneur. Consultez la section précédente pour obtenir la liste des images disponibles.
L’entrée de build du conteneur du Kit de développement logiciel (SDK) .NET 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 Kit de développement logiciel (SDK) .NET gère certains des paramètres qui auraient été encodés dans un fichier Dockerfile, tel que l’image de base de 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, l’image de distribution de conteneur est enregistrée dans le fichier du projet en tant que propriété ContainerBaseImage
. Vous pouvez le modifier ultérieurement en modifiant le fichier 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 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 à l’aide du lancement rapide (Ctrl+Q) et tapez 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.
Pour plus d’informations, consultez Utiliser la fenêtre 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 conteneur à vos projets. Cela vous permet d’exécuter et de déboguer un groupe de conteneurs (une solution entière ou un groupe de projets) en même temps s’ils 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, faites un clic 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 :
Si 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 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
Notez que les hôtes Docker distants ne sont pas pris en charge dans les outils Visual Studio.
Prise en charge de Service Fabric
Avec les outils Service Fabric dans Visual Studio, vous pouvez développer et déboguer pour Azure Service Fabric, 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 didacticiel 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 l’intégration et la livraison automatisées et continues des modifications apportées à votre code de service et à votre configuration. 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 pour l’utilisation des conteneurs, lisez les articles suivants :
Débogage d’applications dans un conteneur Docker local
Déployer un conteneur de ASP.NET dans un registre de conteneurs à l’aide de Visual Studio