Visual Studio Container Tools voor Docker
De hulpprogramma's die zijn opgenomen in Visual Studio voor het ontwikkelen met Docker-containers, zijn eenvoudig te gebruiken en vereenvoudigen het bouwen, opsporen van fouten en implementatie voor toepassingen in containers. U kunt met een container voor één project werken of containerindeling gebruiken met Docker Compose of Service Fabric om met meerdere services in containers te werken.
Voorwaarden
- Docker Desktop
- Visual Studio 2019 met de Web Development, Azure Tools workload en/of platformoverschrijdende ontwikkeling van .NET Core workload geïnstalleerd
- .NET Core Development Tools voor ontwikkeling met .NET Core.
- Om te publiceren naar Azure Container Registry, is een Azure-abonnement nodig. meld u aan voor een gratis proefversie.
Docker-ondersteuning in Visual Studio
Docker-ondersteuning is beschikbaar voor ASP.NET projecten, ASP.NET Core-projecten en .NET Core- en .NET Framework-consoleprojecten.
De ondersteuning voor Docker in Visual Studio is gewijzigd in reactie op de behoeften van de klant. Er zijn twee niveaus van Docker-ondersteuning die u aan een project kunt toevoegen en de ondersteunde opties variëren per type project en de versie van Visual Studio. Voor sommige ondersteunde projecttypen, als u alleen een container voor één project wilt gebruiken zonder orkestratie te gebruiken, kunt u dat doen door Docker-ondersteuning toe te voegen. Het volgende niveau is ondersteuning voor containerindeling, waarmee de juiste ondersteuningsbestanden worden toegevoegd voor de specifieke orchestrator die u kiest.
Met Visual Studio 2019 kunt u Docker Compose, Kubernetes en Service Fabric gebruiken als containerindelingsservices.
Notitie
Wanneer u een .NET Framework- of .NET Core-consoleproject maakt, kunt u geen Docker-ondersteuning toevoegen. Nadat een .NET Core-consoletoepassingsproject is gemaakt, is de optie Docker-ondersteuning toevoegen beschikbaar. .NET Framework-consoletoepassingsprojecten bieden geen ondersteuning voor de optie Docker-ondersteuning toevoegen nadat het project is gemaakt. Na het maken van zowel .NET Framework- als .NET Core-consoleprojecten, wordt de optie Container Orchestrator-ondersteuning toegevoegd met behulp van Service Fabric of Docker Compose ondersteund.
In Visual Studio 2019 versie 16.4 en hoger is het venster Containers beschikbaar, waarmee u actieve containers kunt bekijken, door beschikbare installatiekopieën kunt bladeren, omgevingsvariabelen, logboeken en poorttoewijzingen kunt bekijken, het bestandssysteem kunt inspecteren, een foutopsporingsprogramma kunt koppelen of een terminalvenster kunt openen in de containeromgeving. Zie Gebruik het venster Containers.
Voorwaarden
- Docker Desktop
- Visual Studio 2022 met de Web Development, Azure Tools workload en/of .NET-desktopontwikkeling workload geïnstalleerd
- Een Azure-abonnement is nodig om te publiceren naar Azure Container Registry. meld u aan voor een gratis proefversie.
Docker-ondersteuning in Visual Studio
Docker-ondersteuning is beschikbaar voor ASP.NET projecten, ASP.NET Core-projecten en .NET Core- en .NET Framework-consoleprojecten.
De ondersteuning voor Docker in Visual Studio is gewijzigd in reactie op de behoeften van de klant. Er zijn verschillende opties om Docker-ondersteuning toe te voegen aan een project en de ondersteunde opties variëren per type project en de versie van Visual Studio. Met sommige ondersteunde projecttypen, als u alleen een container voor één project wilt zonder orkestratie te gebruiken, kunt u dat doen door Docker-ondersteuning toe te voegen. Het volgende niveau is ondersteuning voor containerindeling, waarmee de juiste ondersteuningsbestanden worden toegevoegd voor de specifieke orchestrator die u kiest.
Met Visual Studio 2022 versie 17.9 en hoger hebt u, wanneer u Docker-ondersteuning toevoegt aan een .NET 7- of hoger-project, twee typen containerbuilds waaruit u kunt kiezen voor het toevoegen van Docker-ondersteuning. U kunt ervoor kiezen om een Dockerfile toe te voegen om op te geven hoe u de containerinstallatiekopieën bouwt, of u kunt ervoor kiezen om de ingebouwde containerondersteuning van de .NET SDK te gebruiken.
Als u voor containerindeling kiest, kunt u met Visual Studio 2022 en hoger ook Docker Compose of Service Fabric gebruiken als containerindelingsservices.
Notitie
Als u de volledige .NET Framework-consoleprojectsjabloon gebruikt, wordt de ondersteunde optie Ondersteuning voor Container Orchestrator toevoegen na het maken van het project, met opties voor het gebruik van Service Fabric of Docker Compose. Ondersteuning toevoegen bij het maken van projecten en Docker-ondersteuning toevoegen voor een enkel project zonder orchestratie, zijn geen opties.
In Visual Studio 2022 is het venster Containers beschikbaar, waarmee u actieve containers kunt bekijken, door beschikbare installatiekopieën kunt bladeren, omgevingsvariabelen, logboeken en poorttoewijzingen kunt bekijken, het bestandssysteem kunt inspecteren, een foutopsporingsprogramma kunt koppelen of een terminalvenster kunt openen in de containeromgeving. Zie Het venster Containers gebruiken.
Notitie
De licentievereisten van Docker kunnen afwijken voor verschillende versies van Docker Desktop. Raadpleeg de Docker-documentatie om inzicht te hebben in de huidige licentievereisten voor het gebruik van uw versie van Docker Desktop voor ontwikkeling in uw situatie.
Docker-ondersteuning toevoegen
U kunt Docker-ondersteuning inschakelen tijdens het maken van het project door Docker-ondersteuning inschakelen te selecteren bij het maken van een nieuw project, zoals wordt weergegeven in de volgende schermopname:
Notitie
Voor .NET Framework-projecten (niet .NET Core) zijn alleen Windows-containers beschikbaar.
U kunt Docker-ondersteuning toevoegen aan een bestaand project door Toevoegen>Docker-ondersteunings- te selecteren in Solution Explorer-. De > Docker Support toevoegen en > Container Orchestrator-ondersteuningsopdrachten toevoegen bevinden zich in het snelmenu (of contextmenu) van het projectknooppunt voor een ASP.NET Core-project in Solution Explorer, zoals wordt weergegeven in de volgende schermafbeelding:
Docker-ondersteuning toevoegen
Wanneer u Docker-ondersteuning toevoegt of inschakelt, voegt Visual Studio het volgende toe aan het project:
- een Dockerfile-bestand
- een
.dockerignore
-bestand - een NuGet-pakketreferentie naar Microsoft.VisualStudio.Azure.Containers.Tools.Targets
Het Dockerfile dat u toevoegt, lijkt op de volgende code. In dit voorbeeld is het project WebApplication-Docker
genoemd en hebt u Linux-containers gekozen:
#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"]
Docker-ondersteuning toevoegen met behulp van het buildtype Dockerfile-container
Wanneer u Docker-ondersteuning aan een .NET 7 of hoger-project toevoegt of inschakelt, wordt in Visual Studio het dialoogvenster Opties voor container-scaffolding weergegeven, waarmee u de keuze hebt uit het besturingssysteem (Linux of Windows), maar ook de mogelijkheid om het type containerbuild te kiezen, ofwel Dockerfile of .NET SDK. Dit dialoogvenster wordt niet weergegeven in .NET Framework-projecten of Azure Functions-projecten.
In 17.11 en hoger kunt u ook de containerimage distributie en de Docker build-contextopgeven.
Containerafbeeldingdistributie specificeert welke besturingssysteemafbeeldingen uw containers gebruiken als basisafbeelding. Deze lijst verandert als u schakelt tussen Linux en Windows als containertype.
De volgende afbeeldingen zijn beschikbaar:
Windows:
- Windows Nano Server (aanbevolen, alleen beschikbaar voor 8.0 en hoger, niet vooraf geconfigureerd voor native 'ahead-of-time' (AOT) projecten)
- Windows Server Core (alleen beschikbaar 8.0 en hoger)
Linux:
- Standaard (Debian, maar de tag is '8.0')
- Debian
- Ubuntu
- Gepolijste Ubuntu
- Alpien
Notitie
Containers op basis van de Chiseled Ubuntu-image en die gebruikmaken van AOT-implementatie (Native Ahead-of-Time) kunnen alleen in de Fast Mode worden gedebugd. Zie Docker-containers aanpassen in Visual Studio.
Docker Build Context de map specificeert die wordt gebruikt voor de Docker-build. Zie Docker buildcontext. De standaardwaarde is de oplossingsmap, die sterk wordt aanbevolen. Alle bestanden die nodig zijn voor een build, moeten zich onder deze map bevinden. Dit is meestal niet het geval als u de projectmap of een andere map kiest.
Als u Dockerfilekiest, voegt Visual Studio het volgende toe aan het project:
- een Dockerfile-bestand
- een .dockerignore-bestand
- een NuGet-pakketreferentie naar Microsoft.VisualStudio.Azure.Containers.Tools.Targets
Het Dockerfile dat u toevoegt, lijkt op de volgende code. In dit voorbeeld is het project WebApplication-Docker
genoemd en hebt u Linux-containers gekozen:
#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"]
Een .NET-app in een container plaatsen zonder een Dockerfile
Met Visual Studio 2022 17.9 en hoger waarop de .NET 7 SDK is geïnstalleerd, hebt u in ASP.NET Core-projecten die gericht zijn op .NET 6 of hoger, de mogelijkheid om de ingebouwde ondersteuning van .NET SDK voor container-builds te gebruiken, wat betekent dat u geen Dockerfile nodig hebt; zie Een .NET-app containeriseren met dotnet publish. In plaats daarvan configureert u uw containers met behulp van MSBuild-eigenschappen in het projectbestand en worden de instellingen voor het starten van de containers met Visual Studio gecodeerd in een .json
configuratiebestand, launchSettings.json.
Kies hier .NET SDK als het type containerbuild om containerbeheer van .NET SDK te gebruiken in plaats van een Dockerfile.
Container Image Distributie geeft aan welke besturingssysteemafbeelding uw containers gebruiken als de basisafbeelding. Deze lijst verandert als u schakelt tussen Linux en Windows als container. Zie de vorige sectie voor een lijst met beschikbare afbeeldingen.
De .NET SDK-containerbuildvermelding in launchSettings.json ziet eruit als de volgende code:
"Container (.NET SDK)": {
"commandName": "SdkContainer",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"environmentVariables": {
"ASPNETCORE_HTTPS_PORTS": "8081",
"ASPNETCORE_HTTP_PORTS": "8080"
},
"publishAllPorts": true,
"useSSL": true
}
De .NET SDK beheert enkele instellingen die anders in een Dockerfile gecodeerd zouden zijn, zoals de container basisimage en de omgevingsvariabelen die moeten worden ingesteld. De instellingen die beschikbaar zijn in het projectbestand voor containerconfiguratie, worden weergegeven op Uw container aanpassen. De Container Image Distro wordt bijvoorbeeld opgeslagen in het projectbestand als de eigenschap ContainerBaseImage
. U kunt het later wijzigen door het projectbestand te bewerken.
<PropertyGroup>
<ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>
Het venster Containers gebruiken
In het venster Containers kunt u containers en afbeeldingen op uw computer bekijken en zien wat er met ze gebeurt. U kunt het bestandssysteem, gekoppelde volumes, omgevingsvariabelen, gebruikte poorten en logboekbestanden bekijken.
Open het venster Containers met de werkbalk Snel starten (Ctrl+Q) en typ containers
. U kunt de docking-bedieningselementen gebruiken om het venster ergens te plaatsen. Vanwege de breedte van het venster werkt het het beste wanneer het onderaan het scherm is geplaatst.
Selecteer een container en gebruik de tabbladen om de beschikbare informatie weer te geven. Als u het wilt controleren, voert u uw Docker-ingeschakelde app uit, opent u het tabblad Bestanden en vouwt u de map app uit om de geïmplementeerde app in de container te zien.
Voor meer informatie, zie Het venster Containers gebruiken.
Ondersteuning voor Docker Compose
Wanneer u een oplossing met meerdere containers wilt opstellen met behulp van Docker Compose, voegt u ondersteuning voor containerorchestrator toe aan uw projecten. Hiermee kunt u tegelijkertijd een groep containers (een hele oplossing of groep projecten) uitvoeren en fouten opsporen als deze zijn gedefinieerd in hetzelfde docker-compose.yml bestand.
Klik met de rechtermuisknop op het projectknooppunt in Solution Explorer-en kies Toevoegen > Container Orchestrator-ondersteuningals u ondersteuning voor containerorchestrator wilt toevoegen met behulp van Docker Compose. Kies vervolgens Docker Compose- om de containers te beheren.
Nadat u ondersteuning voor een containerorchestrator aan uw project hebt toegevoegd, ziet u een Dockerfile aan het project toegevoegd (als er nog geen aanwezig was) en een docker-compose-map toegevoegd aan de oplossing in de Solution Explorer, zoals hieronder weergegeven:
Als docker-compose.yml al bestaat, voegt Visual Studio de vereiste regels configuratiecode eraan toe.
Herhaal het proces met de andere projecten die u wilt beheren met behulp van Docker Compose.
Als u met een groot aantal services werkt, kunt u tijd en rekenresources besparen door te selecteren welke subset van services u wilt starten in uw foutopsporingssessie. Zie Een subset van Compose-services starten.
Notitie
Houd er rekening mee dat externe Docker-hosts niet worden ondersteund in Visual Studio-hulpprogramma's.
Service Fabric-ondersteuning
Met Service Fabric-hulpprogramma's in Visual Studio kunt u lokaal ontwikkelen en fouten opsporen in Azure Service Fabric, lokaal uitvoeren en fouten opsporen en implementeren in Azure.
Visual Studio 2019 en hoger bieden ondersteuning voor het ontwikkelen van in containers geplaatste microservices met behulp van Windows-containers en Service Fabric-indeling.
Zie Zelfstudie: Een .NET-toepassing in een Windows-container implementeren in Azure Service Fabricvoor een gedetailleerde zelfstudie.
Zie Service Fabric-voor meer informatie over Azure Service Fabric.
Continue levering en continue integratie (CI/CD)
Visual Studio kan gemakkelijk worden geïntegreerd met Azure Pipelines voor geautomatiseerde en continue integratie en levering van wijzigingen in uw servicecode en -configuratie. Zie Uw eerste pijplijn makenom aan de slag te gaan.
Volgende stappen
Lees de volgende artikelen voor meer informatie over de implementatie van services en het gebruik van Visual Studio-hulpprogramma's voor het werken met containers:
foutopsporing van apps in een lokale Docker-container
Een ASP.NET-container implementeren in een containerregister met behulp van Visual Studio
implementeren in Azure App Service
implementeren in Azure Container Apps met behulp van Visual Studio