Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
ASP.NET web projeleri ve diğerleri gibi desteklenen Visual Studio proje türlerinde Docker kapsayıcıları için destek ekleyebilirsiniz. Visual Studio sürümünüzde desteklenen proje türleri hakkında bilgi için genel bakışa bakın.
ASP.NET web projeleri ve diğerleri gibi desteklenen Visual Studio proje türlerine Docker veya Podman kapsayıcıları için destek ekleyebilirsiniz. Visual Studio sürümünüzde desteklenen proje türleri hakkında bilgi için genel bakışa bakın.
Önkoşullar
- Docker Desktop
- ASP.NET ve web geliştirme, Azure geliştirme iş yükü ve/veya .NET masaüstü geliştirme iş yükü yüklü Visual Studio.
- Azure Container Registry'de yayımlamak için bir Azure aboneliğine sahip olmanız gerekir. Ücretsiz deneme için kaydolun.
Önkoşullar
- Docker Desktop veya Podman Desktop.
- Visual Studio veya Podman desteği için Visual Studio 2026, ASP.NET ve web geliştirme, Azure geliştirme iş yükü ve/veya .NET masaüstü geliştirme iş yükü yüklü.
- Azure Container Registry'de yayımlamak için bir Azure aboneliğine sahip olmanız gerekir. Ücretsiz deneme için kaydolun.
Proje oluştururken kapsayıcı desteği ekleme
Aşağıdaki ekran görüntüsünde gösterildiği gibi, yeni proje oluştururken kapsayıcı desteğini etkinleştir'i seçerek proje oluşturma sırasında kapsayıcılar için desteği etkinleştirebilirsiniz:
Uyarı
.NET Framework projeleri için (.NET Core değil), yalnızca Windows kapsayıcıları kullanılabilir.
Uyarı
tr-TR: Tam .NET Framework konsol proje şablonunu kullanıyorsanız, proje oluşturulduktan sonra desteklenen seçenek Konteyner Orchestrator desteği ekle seçeneğidir ve Service Fabric veya Docker Compose'u kullanma seçeneklerini içermektedir. Proje oluşturma sırasında ve düzenleme olmaksızın tek bir proje için Docker desteği ekleme seçenekleri sunulmamaktadır.
Uyarı
Visual Studio'nun geçerli sürümünde .NET Framework kapsayıcıları desteği sona ermektedir. .NET Framework kapsayıcıları Visual Studio 2022 17.14'e kadar desteklendi.
Mevcut projeye kapsayıcı desteği ekleme
Çözüm Gezgini'nde>Ekle'yiseçerek mevcut projeye Docker desteği ekleyebilirsiniz. Kapsayıcı Desteği Ekle > ve Kapsayıcı Düzenleyici Desteği Ekle > komutları, aşağıdaki ekran görüntüsünde gösterildiği gibi Çözüm Gezgini'ndeki ASP.NET Core projesi için proje düğümünün sağ tıklama menüsünde (veya bağlam menüsünde) bulunur:
Kapsayıcı derleme türünü ve diğer seçenekleri seçin
.NET 7 veya sonraki bir projeye kapsayıcı desteği eklediğinizde veya etkinleştirdiğinizde, Visual Studio size işletim sistemi (Linux veya Windows) seçeneğinin yanında Dockerfile veya .NET SDK'sı gibi kapsayıcı derleme türünü de seçme olanağı sağlayan Kapsayıcı İskelesi Seçenekleri iletişim kutusunu gösterir.
Kapsayıcı Görüntü Dağıtımını ve Kapsayıcı Derleme Bağlamını da belirtebilirsiniz.
Kapsayıcı Görüntüsü Dağıtımı , kapsayıcılarınızın temel görüntü olarak hangi işletim sistemi görüntüsünü kullandığını belirtir. Kapsayıcı türü olarak Linux ve Windows arasında geçiş yaptığınızda bu liste değişir.
Aşağıdaki görüntüler kullanılabilir:
Windows:
- Windows Nano Server (önerilen, yalnızca 8.0 ve üzeri sürümlerde kullanılabilir, Yerel Zamanında Derleme (AOT) dağıtım projeleri için önceden ayarlanmış değildir)
- Windows Server Core (yalnızca 8.0 ve üzeri sürümlerde kullanılabilir)
Linux:
- Varsayılan (Debian, ancak etiket hedef .NET sürümünüzle eşleşir)
- Debian
- Ubuntu
- İşlenmiş Ubuntu
- Alpine
Uyarı
Chiseled Ubuntu görüntüsünü temel alan ve Yerel Anında Çalıştırma (AOT) dağıtımı kullanan kapsayıcılar sadece Hızlı Modda hata ayıklanabilir. Bkz. Visual Studio'da Docker kapsayıcılarını özelleştirme.
Kapsayıcı Derleme Bağlamı, docker build veya podman build için kullanılan klasörü belirtir. Bkz. Docker derleme bağlamı veya Podman derlemesi. Varsayılan, önerilen çözüm klasörüdür. Derleme için gereken tüm dosyaların bu klasörün altında olması gerekir; proje klasörünü veya başka bir klasörü seçerseniz bu durum geçerli değildir.
Dockerfile konteyner derleme türü
Dockerfile kapsayıcı derleme türünü seçerseniz, Visual Studio aşağıdakini projeye ekler:
- Dockerfile dosyası
- bir dosya
.dockerignore - Microsoft.VisualStudio.Azure.Containers.Tools.Targets için NuGet paketi referansı
Eklediğiniz Dockerfile aşağıdaki koda benzer. Bu örnekte proje WebApplication-Docker olarak adlandırıldı ve Linux kapsayıcılarını seçtiniz.
# 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"]
.NET SDK kapsayıcı derleme türü
Kapsayıcı derlemeleri için .NET SDK'sı yerleşik desteğini kullanabilirsiniz; bu da Dockerfile'a ihtiyacınız olmadığı anlamına gelir; bkz . Dotnet publish ile bir .NET uygulamasını kapsayıcıya alma. Bunun yerine, proje dosyasındaKI MSBuild özelliklerini kullanarak kapsayıcılarınızı yapılandırırsınız ve Visual Studio ile kapsayıcıları başlatma ayarları .jsonbir yapılandırma dosyasında kodlanır.
Burada, Dockerfile yerine .NET SDK'sının kapsayıcı yönetimini kullanmak için kapsayıcı derleme türü olarak .NET SDK'yı seçin.
Kapsayıcı Görüntüsü Dağıtımı , kapsayıcılarınızın temel görüntü olarak hangi işletim sistemi görüntüsünü kullandığını belirtir. Kapsayıcı olarak Linux ve Windows arasında geçiş yaptığınızda bu liste değişir. Kullanılabilir görüntülerin listesi için önceki bölüme bakın.
launchSettings.json içindeki .NET SDK kapsayıcı derleme girdisi aşağıdaki koda benzer:
"Container (.NET SDK)": {
"commandName": "SdkContainer",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"environmentVariables": {
"ASPNETCORE_HTTPS_PORTS": "8081",
"ASPNETCORE_HTTP_PORTS": "8080"
},
"publishAllPorts": true,
"useSSL": true
}
.NET SDK'sı, kapsayıcı temel görüntüsü ve ayarlanacağı ortam değişkenleri gibi dockerfile içinde kodlanmış olabilecek bazı ayarları yönetir. Kapsayıcı yapılandırması için proje dosyasındaki kullanılabilir ayarlar Kapsayıcınızı özelleştirme bölümünde listelenir. Örneğin , Container Image Distro özelliği olarak ContainerBaseImage proje dosyasına kaydedilir. Daha sonra proje dosyasını düzenleyerek değiştirebilirsiniz.
<PropertyGroup>
<ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>
Kapsayıcı derleme türünü ve diğer seçenekleri seçin
Bir .NET 7 veya sonraki bir projeye Docker desteği eklediğinizde veya etkinleştirdiğinizde, Visual Studio size işletim sistemi (Linux veya Windows) seçeneği sunan Kapsayıcı yapı iskelesi seçenekleri iletişim kutusunu, aynı zamanda Dockerfile veya .NET SDK'sı gibi kapsayıcı derleme türünü seçme olanağını gösterir. Bu iletişim kutusu .NET Framework projelerinde görünmez.
17.11 ve sonraki sürümlerde Kapsayıcı Görüntüsü Dağıtımı ve Docker Derleme Bağlamı'nı da belirtebilirsiniz.
Kapsayıcı Görüntüsü Dağıtımı , kapsayıcılarınızın temel görüntü olarak hangi işletim sistemi görüntüsünü kullandığını belirtir. Kapsayıcı türü olarak Linux ve Windows arasında geçiş yaptığınızda bu liste değişir.
Aşağıdaki görüntüler kullanılabilir:
Windows:
- Windows Nano Server (önerilen, yalnızca 8.0 ve üzeri sürümlerde kullanılabilir, Yerel Zamanında Derleme (AOT) dağıtım projeleri için önceden ayarlanmış değildir)
- Windows Server Core (yalnızca 8.0 ve üzeri sürümlerde kullanılabilir)
Linux:
- Varsayılan (Debian, ancak etiket değeri "8.0")
- Debian
- Ubuntu
- İşlenmiş Ubuntu
- Alpine
Uyarı
Chiseled Ubuntu görüntüsünü temel alan ve Yerel Anında Çalıştırma (AOT) dağıtımı kullanan kapsayıcılar sadece Hızlı Modda hata ayıklanabilir. Bkz. Visual Studio'da Docker kapsayıcılarını özelleştirme.
Docker Derleme Bağlamı , Docker derlemesi için kullanılan klasörü belirtir. Bkz. Docker derleme bağlamı. Varsayılan, önerilen çözüm klasörüdür. Derleme için gereken tüm dosyaların bu klasörün altında olması gerekir; proje klasörünü veya başka bir klasörü seçerseniz bu durum geçerli değildir.
Dockerfile konteyner derleme türü
Dockerfile kapsayıcı derleme türünü seçerseniz, Visual Studio aşağıdakini projeye ekler:
- Dockerfile dosyası
- bir dosya
.dockerignore - Microsoft.VisualStudio.Azure.Containers.Tools.Targets için NuGet paketi referansı
Eklediğiniz Dockerfile aşağıdaki koda benzer. Bu örnekte proje WebApplication-Docker olarak adlandırıldı ve Linux kapsayıcılarını seçtiniz.
#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"]
.NET SDK kapsayıcı derleme türü
Visual Studio 2022 17.9 ve üzeri .NET 7 SDK yüklüyken, .NET 6 veya üzerini hedefleyen ASP.NET Core projelerinde. Kapsayıcı derlemeleri için .NET SDK'nın yerleşik desteğini kullanma seçeneğiniz vardır; bu da Dockerfile'a ihtiyacınız olmadığı anlamına gelir; bkz . Dotnet publish ile bir .NET uygulamasını kapsayıcıya alma. Bunun yerine, proje dosyasındaKI MSBuild özelliklerini kullanarak kapsayıcılarınızı yapılandırırsınız ve Visual Studio ile kapsayıcıları başlatma ayarları .jsonbir yapılandırma dosyasında kodlanır.
Burada, Dockerfile yerine .NET SDK'sının kapsayıcı yönetimini kullanmak için kapsayıcı derleme türü olarak .NET SDK'yı seçin.
Kapsayıcı Görüntüsü Dağıtımı , kapsayıcılarınızın temel görüntü olarak hangi işletim sistemi görüntüsünü kullandığını belirtir. Kapsayıcı olarak Linux ve Windows arasında geçiş yaptığınızda bu liste değişir. Kullanılabilir görüntülerin listesi için önceki bölüme bakın.
launchSettings.json içindeki .NET SDK kapsayıcı derleme girdisi aşağıdaki koda benzer:
"Container (.NET SDK)": {
"commandName": "SdkContainer",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"environmentVariables": {
"ASPNETCORE_HTTPS_PORTS": "8081",
"ASPNETCORE_HTTP_PORTS": "8080"
},
"publishAllPorts": true,
"useSSL": true
}
.NET SDK'sı, kapsayıcı temel görüntüsü ve ayarlanacağı ortam değişkenleri gibi dockerfile içinde kodlanmış olabilecek bazı ayarları yönetir. Kapsayıcı yapılandırması için proje dosyasındaki kullanılabilir ayarlar Kapsayıcınızı özelleştirme bölümünde listelenir. Örneğin , Container Image Distro özelliği olarak ContainerBaseImage proje dosyasına kaydedilir. Daha sonra proje dosyasını düzenleyerek değiştirebilirsiniz.
<PropertyGroup>
<ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>
Sonraki Adımlar
Kapsayıcılarla çalışmaya yönelik Visual Studio araçlarının hizmet uygulaması ve kullanımı hakkında daha fazla bilgi için aşağıdaki makaleleri okuyun:
Yerel kapsayıcıdaki uygulamalarda hata ayıklama
Visual Studio kullanarak bir ASP.NET kapsayıcısını bir kapsayıcı kayıt defterine dağıtma
Visual Studio kullanarak Azure Container Apps'e dağıtma