Docker için Visual Studio Kapsayıcı Araçları
Docker kapsayıcılarıyla geliştirmeye yönelik Visual Studio'da bulunan araçların kullanımı kolaydır ve kapsayıcılı uygulamalar için derleme, hata ayıklama ve dağıtımı büyük ölçüde basitleştirir. Tek bir proje için kapsayıcıyla çalışabilir veya kapsayıcılarda birden çok hizmetle çalışmak için Docker Compose veya Service Fabric ile kapsayıcı düzenlemesini kullanabilirsiniz.
Önkoşullar
- Docker Desktop
- Web Geliştirme, Azure Araçları iş yükü ve/veya .NET Core platformlar arası geliştirme iş yükünün yüklü olduğu visual studio 2019
- .NET Core ile geliştirme için .NET Core Geliştirme Araçları.
- Azure Container Registry'ye yayımlamak için bir Azure aboneliği gereklidir. Ücretsiz deneme için kaydolun.
Visual Studio'da Docker desteği
Docker desteği ASP.NET projeleri, ASP.NET Core projeleri ve .NET Core ve .NET Framework konsol projeleri için kullanılabilir.
Visual Studio'da Docker desteği, müşteri ihtiyaçlarına yanıt olarak bir dizi sürümde değişti. Projeye ekleyebileceğiniz iki Docker desteği düzeyi vardır ve desteklenen seçenekler projenin türüne ve Visual Studio sürümüne göre değişir. Desteklenen bazı proje türlerinde, düzenleme kullanmadan yalnızca tek bir proje için kapsayıcı istiyorsanız, Docker desteği ekleyerek bunu yapabilirsiniz. Sonraki düzey, seçtiğiniz düzenleyici için uygun destek dosyalarını ekleyen kapsayıcı düzenleme desteğidir.
Visual Studio 2019 ile Docker Compose, Kubernetes ve Service Fabric'i kapsayıcı düzenleme hizmetleri olarak kullanabilirsiniz.
Not
.NET Framework veya .NET Core konsol projesi oluştururken Docker desteği ekleme seçeneği yoktur. Bir .NET Core konsol uygulaması projesi oluşturulduktan sonra, Docker desteği ekle seçeneği kullanılabilir. .NET Framework konsol uygulaması projeleri, proje oluşturulduktan sonra Docker desteği ekle seçeneğini desteklemez. Hem .NET Framework hem de .NET Core konsol projeleri oluşturulduktan sonra Service Fabric veya Docker Compose kullanarak Kapsayıcı Düzenleyici Desteği Ekle seçeneğini destekler.
Visual Studio 2019 sürüm 16.4 ve sonraki sürümlerinde çalışan kapsayıcıları görüntülemenize, kullanılabilir görüntülere göz atmanıza, ortam değişkenlerini, günlükleri ve bağlantı noktası eşlemelerini görüntülemenize, dosya sistemini incelemenize, hata ayıklayıcı eklemenize veya kapsayıcı ortamının içinde bir terminal penceresi açmanıza olanak tanıyan Kapsayıcılar penceresi kullanılabilir. bkz. Kapsayıcılar penceresini kullanma.
Önkoşullar
- Docker Desktop
- Visual Studio 2022 ile Web Geliştirme, Azure Araçları iş yükü ve/veya .NET masaüstü geliştirme iş yükü yüklü
- Azure Container Registry'ye yayımlamak için bir Azure aboneliği gereklidir. Ücretsiz deneme için kaydolun.
Visual Studio'da Docker desteği
Docker desteği ASP.NET projeleri, ASP.NET Core projeleri ve .NET Core ve .NET Framework konsol projeleri için kullanılabilir.
Visual Studio'da Docker desteği, müşteri ihtiyaçlarına yanıt olarak bir dizi sürümde değişti. Projeye Docker desteği eklemek için çeşitli seçenekler vardır ve desteklenen seçenekler projenin türüne ve Visual Studio sürümüne göre farklılık gösterir. Desteklenen bazı proje türlerinde, düzenleme kullanmadan yalnızca tek bir proje için kapsayıcı istiyorsanız, Docker desteği ekleyerek bunu yapabilirsiniz. Sonraki düzey, seçtiğiniz düzenleyici için uygun destek dosyalarını ekleyen kapsayıcı düzenleme desteğidir.
Visual Studio 2022 sürüm 17.9 ve üzeri ile bir .NET 7 veya sonraki bir projeye Docker desteği eklediğinizde, Docker desteği eklemek için aralarından seçim yapabileceğiniz iki kapsayıcı derleme türü vardır. Kapsayıcı görüntülerinin nasıl derleneceğini belirtmek için bir Dockerfile eklemeyi veya .NET SDK tarafından sağlanan yerleşik kapsayıcı desteğini kullanmayı seçebilirsiniz.
Ayrıca Visual Studio 2022 ve sonraki sürümlerde kapsayıcı düzenlemeyi seçtiğinizde docker Compose veya Service Fabric'i kapsayıcı düzenleme hizmetleri olarak kullanabilirsiniz.
Not
Tam .NET Framework konsol proje şablonunu kullanıyorsanız, desteklenen seçenek Proje oluşturulduktan sonra Service Fabric veya Docker Compose'u kullanma seçenekleriyle birlikte Kapsayıcı Orchestrator desteği ekleme seçeneğidir. Proje oluştururken destek ekleme ve düzenleme olmadan tek bir proje için Docker desteği ekleme seçenekleri mevcut değildir.
Visual Studio 2022'de çalışan kapsayıcıları görüntülemenize, kullanılabilir görüntülere göz atmanıza, ortam değişkenlerini, günlükleri ve bağlantı noktası eşlemelerini görüntülemenize, dosya sistemini incelemenize, hata ayıklayıcı eklemenize veya kapsayıcı ortamının içinde bir terminal penceresi açmanıza olanak tanıyan Kapsayıcılar penceresi kullanılabilir. bkz. Kapsayıcılar penceresini kullanma.
Not
Docker Desktop'ın farklı sürümleri için Docker'ın lisans gereksinimleri farklı olabilir. Sizin durumunuzda geliştirme amacıyla Docker Desktop sürümünüzü kullanmaya yönelik geçerli lisanslama gereksinimlerini anlamak için Docker belgelerine bakın.
Docker desteği ekleme
Aşağıdaki ekran görüntüsünde gösterildiği gibi, yeni proje oluştururken Docker Desteği etkinleştir seçerek proje oluşturma sırasında Docker desteğini etkinleştirebilirsiniz:
Not
.NET Framework projeleri için (.NET Core değil), yalnızca Windows kapsayıcıları kullanılabilir.
Docker desteğini mevcut bir projeye eklemek için Çözüm Gezginiiçinden >Docker Desteği Ekle seçeneğini seçebilirsiniz. > Docker Desteği Ekle ve > Kapsayıcı Düzenleyicisi Desteği Ekle komutları, aşağıdaki ekran görüntüsünde gösterildiği gibi Çözüm GezginiASP.NET Core projesi için proje düğümünün sağ tıklama menüsünde (veya bağlam menüsünde) bulunur:
Docker desteği ekleme
Docker desteğini eklediğinizde veya etkinleştirdiğinizde Visual Studio aşağıdakini projeye ekler:
- bir Dockerfile dosyası
-
.dockerignore
dosyası - 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ılmıştır 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: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"]
Dockerfile kapsayıcı derleme türünü kullanarak Docker desteği ekleme
Docker desteğini bir .NET 7 veya sonraki bir projeye eklediğinizde veya etkinleştirdiğinizde Visual Studio, Kapsayıcı yapı iskelesi seçenekleri iletişim kutusunu gösterir. Bu iletişim kutusu size işletim sistemi (Linux veya Windows) seçeneği sunar, ayrıca dockerfile veya .NET SDK kapsayıcı derleme türünü seçebilirsiniz. Bu iletişim kutusu .NET Framework projelerinde veya Azure İşlevleri projelerinde görünmez.
17.11 ve üstü sürümlerde, Container Image Distro ve Docker Derleme Bağlamıbelirtebilirsiniz.
Container Image Distro 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 kullanılabilir, Önceden Yerel (AOT) dağıtım projeleri için önceden ayarlanmamıştır)
- Windows Server Core (yalnızca 8.0 ve üzeri sürümlerde kullanılabilir)
Linux:
- Varsayılan (Debian, ancak etiket "8.0")
- Debian
- Ubuntu
- İşlenmiş Ubuntu
- Alpine
Not
Keskili Ubuntu görüntüsünü temel alan ve yerel önceden (AOT) dağıtım kullanan kapsayıcılar yalnızca 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. Bakınız Docker derleme bağlamı. Varsayılan, kesinlikle önerilen çözüm klasörüdür. Bir 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 genellikle böyle olmaz.
Dockerfileseçerseniz, Visual Studio aşağıdakini projeye ekler:
- bir Dockerfile dosyası
- .dockerignore dosyası
- 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ılmıştır 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: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"]
Dockerfile olmadan bir .NET uygulamasını kapsayıcıya alma
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 publishile 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ı .json
bir 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 seçin.
Container Image Distro 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ında bulunan ayarlar Kapsayıcınızı özelleştirmealtında listelenir. Örneğin, Kapsayıcı İmaj Dağıtımı proje dosyasına ContainerBaseImage
özellik olarak 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ılar penceresini kullanma
Kapsayıcılar penceresi, makinenizdeki kapsayıcıları ve görüntüleri görüntülemenize ve bunların neler olduğunu görmenize olanak tanır. Dosya sistemini, bağlanan birimleri, ortam değişkenlerini, kullanılan bağlantı noktalarını görüntüleyebilir ve günlük dosyalarını inceleyebilirsiniz.
Hızlı başlatmayı (Ctrl+) kullanarak ve yazarak containers
penceresini açın. Pencereyi bir yere yerleştirmek için yerleştirme denetimlerini kullanabilirsiniz. Pencerenin genişliği nedeniyle, ekranın en altına yerleştirildiğinde en iyi şekilde çalışır.
Bir kapsayıcı seçin ve kullanılabilir bilgileri görüntülemek için sekmeleri kullanın. Kontrol etmek için, Docker özellikli uygulamanızı çalıştırın, Dosyalar sekmesini açın ve kapsayıcıdaki dağıtılan uygulamanızı görmek amacıyla uygulama klasörünü genişletin.
kapsayıcılar penceresinin ekran görüntüsü
kapsayıcılar penceresinin ekran görüntüsü
Daha fazla bilgi için bkz. Kapsayıcılar penceresini kullanma.
Docker Compose desteği
Docker Compose kullanarak çok kapsayıcılı bir çözüm oluşturmak istediğinizde projelerinize kapsayıcı düzenleyici desteği ekleyin. Bu, aynı docker-compose.yml dosyasında tanımlanan kapsayıcı grubunu (bir çözüm veya proje grubunun tamamı) aynı anda çalıştırmanızı ve hatalarını ayıklamanızı sağlar.
Docker Compose kullanarak kapsayıcı düzenleyici desteği eklemek için, Çözüm Gezgini'nde proje düğümüne sağ tıklayın ve Ekle > Kapsayıcı Düzenleyici Desteğiseçin. Ardından kapsayıcıları yönetmek için docker Compose seçin.
Projenize kapsayıcı düzenleyicisi desteği ekledikten sonra, burada gösterildiği gibi projeye bir Dockerfile eklendiğini (orada yoksa) ve çözüme Çözüm Gezgini'nde bir docker-compose klasörü eklendiğini görürsünüz:
docker-compose.yml zaten varsa, Visual Studio yalnızca gerekli yapılandırma kodu satırlarını ekler.
Docker Compose kullanarak denetlemek istediğiniz diğer projelerle işlemi yineleyin.
Çok sayıda hizmetle çalışıyorsanız, hata ayıklama oturumunuzda hangi hizmet alt kümesini başlatmak istediğinizi seçerek zaman ve bilgi işlem kaynaklarından tasarruf edebilirsiniz. Bkz. Compose hizmetlerinin alt kümesini başlat.
Not
Uzak Docker konaklarının Visual Studio araçlarında desteklenmediğini unutmayın.
Service Fabric desteği
Visual Studio'daki Service Fabric araçlarıyla Azure Service Fabric için geliştirme ve debug yapabilir, yerelde çalıştırabilir, debug edebilir ve Azure'a dağıtabilirsiniz.
Visual Studio 2019 ve üzeri, Windows kapsayıcılarını ve Service Fabric düzenlemesini kullanarak kapsayıcılı mikro hizmetler geliştirmeyi destekler.
Ayrıntılı bir öğretici için bkz. Öğretici: Azure Service Fabric'e bir Windows container'ında .NET uygulaması dağıtma.
Azure Service Fabric hakkında daha fazla bilgi için bkz. Service Fabric.
Sürekli teslim ve sürekli entegrasyon (CI/CD)
Visual Studio, hizmet kodunuzdaki ve yapılandırmanızdaki değişikliklerin otomatik ve sürekli tümleştirilmesi ve teslim edilmesi için Azure Pipelines ile kolaylıkla entegre edilir. İlk adım olarak, İlk işlem hattınızı oluşturmabölümüne bakın.
Service Fabric için bkz. Kılavuz: ASP.NET Core uygulamanızı Azure DevOps Projelerikullanarak Azure Service Fabric'e dağıtma.
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 docker kapsayıcısında hata ayıklama uygulamaları
Visual Studio kullanarak bir ASP.NET kapsayıcısını kapsayıcı kayıt defterine dağıtma
Azure Uygulama Hizmeti'ne Dağıtma
Visual Studio kullanarak Azure Container Apps'e dağıtım yapma