Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Obsługę kontenerów platformy Docker można dodać w obsługiwanych typach projektów programu Visual Studio, takich jak projekty internetowe ASP.NET i inne. Zapoznaj się z omówieniem , aby uzyskać informacje o obsługiwanych typach projektów w używanej wersji programu Visual Studio.
Obsługę kontenerów platformy Docker lub Podman można dodać w obsługiwanych typach projektów programu Visual Studio, takich jak ASP.NET projekty internetowe i inne. Zapoznaj się z omówieniem , aby uzyskać informacje o obsługiwanych typach projektów w używanej wersji programu Visual Studio.
Wymagania wstępne
- Docker Desktop
- Program Visual Studio, który ma zainstalowane pakiety do tworzenia ASP.NET i aplikacji internetowych, rozwoju aplikacji na platformie Azure, i/lub rozwoju aplikacji desktopowych .NET.
- Aby opublikować w Azure Container Registry, potrzebna jest subskrypcja Azure. Utwórz konto bezpłatnej wersji próbnej.
Wymagania wstępne
- Docker Desktop lub Podman Desktop.
- Visual Studio lub dla obsługi Podman Visual Studio 2026 z zainstalowanymi pakietami roboczymi tworzenie aplikacji ASP.NET i aplikacji sieci Web, Programowanie na platformie Azure i/lub tworzenie aplikacji klasycznych platformy .NET.
- Aby opublikować w Azure Container Registry, potrzebna jest subskrypcja Azure. Utwórz konto bezpłatnej wersji próbnej.
Dodawanie obsługi kontenerów podczas tworzenia projektu
Obsługę kontenerów podczas tworzenia projektu można włączyć, wybierając pozycję Włącz obsługę kontenerów podczas tworzenia nowego projektu, jak pokazano na poniższym zrzucie ekranu:
Uwaga / Notatka
W przypadku projektów .NET Framework (nie .NET Core) dostępne są tylko kontenery systemu Windows.
Uwaga / Notatka
Jeśli używasz pełnego szablonu projektu konsoli programu .NET Framework, obsługiwaną opcją jest dodanie obsługi orkiestratora kontenerów po utworzeniu projektu z opcjami użycia usługi Service Fabric lub narzędzia Docker Compose. Dodanie obsługi przy tworzeniu projektu i dodanie obsługi platformy Docker dla pojedynczego projektu bez orkiestracji nie jest opcją.
Uwaga / Notatka
Obsługa kontenerów programu .NET Framework została przerwana w bieżącej wersji programu Visual Studio. Kontenery programu .NET Framework były obsługiwane do programu Visual Studio 2022 w wersji 17.14.
Dodawanie obsługi kontenera do istniejącego projektu
Obsługę platformy Docker można dodać do istniejącego projektu, wybierając pozycję Dodaj>obsługę kontenera w Eksploratorze rozwiązań. Polecenia Dodaj > obsługę kontenera i Dodaj > obsługę orkiestratora kontenerów są dostępne w menu kontekstowym (po kliknięciu prawym przyciskiem myszy) węzła projektu dla projektu ASP.NET Core w Eksploratorze rozwiązań, jak pokazano na poniższym zrzucie ekranu:
Wybieranie typu kompilacji kontenera i innych opcji
Po dodaniu lub włączeniu obsługi kontenera w projekcie platformy .NET 7 lub nowszym program Visual Studio wyświetla okno dialogowe Opcje tworzenia szkieletu kontenera , które daje wybór systemu operacyjnego (Linux lub Windows), ale także możliwość wyboru typu kompilacji kontenera, dockerfile lub zestawu SDK platformy .NET.
Można również określić dystrybucję obrazu kontenerowego i kontekst budowania kontenera.
Dystrybucja obrazu kontenera określa, jaki obraz systemu operacyjnego jest używany jako podstawowy dla kontenerów. Ta lista zmieni się, jeśli przełączysz się między systemami Linux i Windows jako typ kontenera.
Dostępne są następujące obrazy:
Windows:
- System Windows Nano Server (zalecany, dostępny tylko w wersji 8.0 lub nowszej, a nie jest wstępnie ustawiony dla projektów wdrażania natywnego przed czasem (AOT)
- Windows Server Core (tylko wersja 8.0 lub nowsza)
Linux:
- Wartość domyślna (Debian, ale tag jest zgodny z docelową wersją platformy .NET)
- Debian
- Ubuntu
- Chiseled Ubuntu
- Alpejski
Uwaga / Notatka
Kontenery oparte na obrazie Chiseled Ubuntu z natywnym wdrożeniem ahead-of-time (AOT) mogą być debugowane tylko w trybie szybkim. Zobacz Dostosowywanie kontenerów platformy Docker w programie Visual Studio.
Kontekst kompilacji kontenera określa folder, który jest używany dla docker build (lub podman build). Zobacz Kontekst kompilacji platformy Docker lub Kompilacja narzędzia Podman. Wartość domyślna to folder rozwiązania, który jest zalecany. Wszystkie pliki potrzebne do kompilacji muszą znajdować się w tym folderze, co nie ma miejsca w przypadku wybrania folderu projektu lub innego folderu.
Typ kompilacji kontenera dockerfile
Jeśli wybierzesz typ kompilacji kontenera Dockerfile , program Visual Studio doda następujące elementy do projektu:
- plik Dockerfile
-
.dockerignoreplik - odwołanie do pakietu NuGet dla Microsoft.VisualStudio.Azure.Containers.Tools.Targets
Dodany plik Dockerfile będzie podobny do poniższego kodu. W tym przykładzie projekt miał nazwę WebApplication-Dockeri wybrano kontenery systemu Linux:
# See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
# This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["WebApplication15-AddContainerSupport/WebApplication15-AddContainerSupport.csproj", "WebApplication15-AddContainerSupport/"]
RUN dotnet restore "./WebApplication15-AddContainerSupport/WebApplication15-AddContainerSupport.csproj"
COPY . .
WORKDIR "/src/WebApplication15-AddContainerSupport"
RUN dotnet build "./WebApplication15-AddContainerSupport.csproj" -c $BUILD_CONFIGURATION -o /app/build
# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./WebApplication15-AddContainerSupport.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication15-AddContainerSupport.dll"]
Typ kompilacji kontenera zestawu SDK platformy .NET
Możesz użyć wbudowanej obsługi zestawu .NET SDK dla kompilacji kontenerów, co oznacza, że nie potrzebujesz pliku Dockerfile; zobacz Containerize a .NET app with dotnet publish (Konteneryzowanie aplikacji .NET za pomocą polecenia dotnet publish). Zamiast tego należy skonfigurować kontenery przy użyciu właściwości msBuild w pliku projektu, a ustawienia uruchamiania kontenerów za pomocą programu Visual Studio są kodowane w .json pliku konfiguracji ,launchSettings.json.
W tym miejscu wybierz zestaw .NET SDK jako typ kompilacji kontenera, aby używać zarządzania kontenerami zestawu SDK platformy .NET zamiast pliku Dockerfile.
Dystrybucja obrazu kontenera określa, jaki obraz systemu operacyjnego jest używany jako podstawowy dla kontenerów. Ta lista zmienia się, jeśli przełączasz się między systemami Linux i Windows jako środowisko kontenera. Zobacz poprzednią sekcję, aby uzyskać listę dostępnych obrazów.
Wpis budowania kontenera .NET SDK w launchSettings.json wygląda następująco:
"Container (.NET SDK)": {
"commandName": "SdkContainer",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"environmentVariables": {
"ASPNETCORE_HTTPS_PORTS": "8081",
"ASPNETCORE_HTTP_PORTS": "8080"
},
"publishAllPorts": true,
"useSSL": true
}
Zestaw .NET SDK zarządza niektórymi ustawieniami, które zostałyby zakodowane w pliku Dockerfile, takim jak obraz podstawowy kontenera, oraz zmienne środowiskowe do ustawienia. Ustawienia dostępne w pliku projektu dla konfiguracji kontenera są wyświetlane w temacie Dostosowywanie kontenera. Na przykład Container Image Distro jest zapisywana w pliku projektu jako właściwość ContainerBaseImage. Później można go zmienić, edytując plik projektu.
<PropertyGroup>
<ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>
Wybieranie typu kompilacji kontenera i innych opcji
Po dodaniu lub włączeniu obsługi platformy Docker w projekcie platformy .NET 7 lub nowszym program Visual Studio wyświetli okno dialogowe Opcje tworzenia szkieletu kontenera , co daje wybór systemu operacyjnego (Linux lub Windows), ale także możliwość wybierania typu kompilacji kontenera, pliku Dockerfile lub zestawu SDK platformy .NET. To okno dialogowe nie jest wyświetlane w projektach programu .NET Framework.
W wersji 17.11 lub nowszej można również określić dystrybucję obrazu kontenera i kontekst budowy Docker.
Dystrybucja obrazu kontenera określa, jaki obraz systemu operacyjnego jest używany jako podstawowy dla kontenerów. Ta lista zmieni się, jeśli przełączysz się między systemami Linux i Windows jako typ kontenera.
Dostępne są następujące obrazy:
Windows:
- System Windows Nano Server (zalecany, dostępny tylko w wersji 8.0 lub nowszej, a nie jest wstępnie ustawiony dla projektów wdrażania natywnego przed czasem (AOT)
- Windows Server Core (tylko wersja 8.0 lub nowsza)
Linux:
- Wartość domyślna (Debian, ale tag to "8.0")
- Debian
- Ubuntu
- Chiseled Ubuntu
- Alpejski
Uwaga / Notatka
Kontenery oparte na obrazie Chiseled Ubuntu z natywnym wdrożeniem ahead-of-time (AOT) mogą być debugowane tylko w trybie szybkim. Zobacz Dostosowywanie kontenerów platformy Docker w programie Visual Studio.
Kontekst kompilacji platformy Docker określa folder używany do kompilacji platformy Docker. Zobacz Kontekst kompilacji platformy Docker. Wartość domyślna to folder rozwiązania, który jest zalecany. Wszystkie pliki potrzebne do kompilacji muszą znajdować się w tym folderze, co nie ma miejsca w przypadku wybrania folderu projektu lub innego folderu.
Typ kompilacji kontenera dockerfile
Jeśli wybierzesz typ kompilacji kontenera Dockerfile , program Visual Studio doda następujące elementy do projektu:
- plik Dockerfile
-
.dockerignoreplik - odwołanie do pakietu NuGet dla Microsoft.VisualStudio.Azure.Containers.Tools.Targets
Dodany plik Dockerfile będzie podobny do poniższego kodu. W tym przykładzie projekt miał nazwę WebApplication-Dockeri wybrano kontenery systemu 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:8.0 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
FROM mcr.microsoft.com/dotnet/sdk:8.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"]
Typ kompilacji kontenera zestawu SDK platformy .NET
W programie Visual Studio 2022 17.9 lub nowszym z zainstalowanym zestawem SDK platformy .NET 7 w projektach platformy ASP.NET Core przeznaczonych dla platformy .NET 6 lub nowszego masz możliwość korzystania z wbudowanej obsługi zestawu .NET SDK dla kompilacji kontenerów, co oznacza, że nie potrzebujesz pliku Dockerfile; zobacz Containerize a .NET app with dotnet publish (Konteneryzowanie aplikacji .NET za pomocą polecenia dotnet publish). Zamiast tego należy skonfigurować kontenery przy użyciu właściwości msBuild w pliku projektu, a ustawienia uruchamiania kontenerów za pomocą programu Visual Studio są kodowane w .json pliku konfiguracji ,launchSettings.json.
W tym miejscu wybierz zestaw .NET SDK jako typ kompilacji kontenera, aby używać zarządzania kontenerami zestawu SDK platformy .NET zamiast pliku Dockerfile.
Dystrybucja obrazu kontenera określa, jaki obraz systemu operacyjnego jest używany jako podstawowy dla kontenerów. Ta lista zmienia się, jeśli przełączasz się między systemami Linux i Windows jako środowisko kontenera. Zobacz poprzednią sekcję, aby uzyskać listę dostępnych obrazów.
Wpis budowania kontenera .NET SDK w launchSettings.json wygląda następująco:
"Container (.NET SDK)": {
"commandName": "SdkContainer",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"environmentVariables": {
"ASPNETCORE_HTTPS_PORTS": "8081",
"ASPNETCORE_HTTP_PORTS": "8080"
},
"publishAllPorts": true,
"useSSL": true
}
Zestaw .NET SDK zarządza niektórymi ustawieniami, które zostałyby zakodowane w pliku Dockerfile, takim jak obraz podstawowy kontenera, oraz zmienne środowiskowe do ustawienia. Ustawienia dostępne w pliku projektu dla konfiguracji kontenera są wyświetlane w temacie Dostosowywanie kontenera. Na przykład Container Image Distro jest zapisywana w pliku projektu jako właściwość ContainerBaseImage. Później można go zmienić, edytując plik projektu.
<PropertyGroup>
<ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>
Dalsze kroki
Aby uzyskać więcej informacji na temat implementacji usług i używania narzędzi programu Visual Studio do pracy z kontenerami, przeczytaj następujące artykuły:
Platforma Docker w programie Visual Studio
Debugowanie aplikacji w kontenerze lokalnym
Wdrażanie kontenera ASP.NET w rejestrze kontenerów przy użyciu programu Visual Studio
Wdrażanie w usłudze Azure App Service
Wdrażanie w usłudze Azure Container Apps przy użyciu programu Visual Studio