Delen via


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

Schermopname van het inschakelen van Docker-ondersteuning voor nieuwe ASP.NET Core-web-app in Visual Studio.

Schermopname van het inschakelen van Docker-ondersteuning voor nieuwe ASP.NET Core-web-app in Visual Studio.

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:

Schermopname waarin wordt getoond hoe u de menuoptie Docker Support toevoegt in Visual Studio.

Schermopname waarin wordt getoond hoe u de menuoptie Docker Support toevoegt in Visual Studio.

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

Schermafbeelding van het dialoogvenster 'Container Scaffolding-opties' voor het toevoegen van Docker-ondersteuning.

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

schermopname van het dialoogvenster Opties voor container scaffolding voor het toevoegen van Docker-ondersteuning met .NET SDK geselecteerd als het type containerbuild.

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.

schermopname van het venster Containers.

schermopname van het venster Containers.

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:

Schermopname van Docker-bestanden in Solution Explorer in Visual Studio.

Schermopname van Docker-bestanden in Solution Explorer in Visual Studio.

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.

Zie zelfstudie voor Service Fabric: Uw ASP.NET Core-app implementeren in Azure Service Fabric met behulp van Azure DevOps Projects.

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