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

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

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ı Düzenleyicisi desteği ekle seçeneğidir. Proje oluşturma sırasında destek ekleme ve düzenleme olmadan tek bir proje için Docker desteği ekleme seçenekleri sağlanmaz.

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 için 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ğini Etkinleştir'i seçerek proje oluşturma sırasında Docker desteğini etkinleştirebilirsiniz:

Visual Studio'da yeni ASP.NET Core web uygulaması için Docker Desteği'ni etkinleştirmeyi gösteren ekran görüntüsü.

Visual Studio'da yeni ASP.NET Core web uygulaması için Docker Desteği'ni etkinleştirmeyi gösteren ekran görüntüsü.

Not

.NET Framework projeleri için (.NET Core değil), yalnızca Windows kapsayıcıları kullanılabilir.

Çözüm Gezgini Docker Desteği Ekle'yi> seçerek mevcut projeye Docker desteği ekleyebilirsiniz. Docker 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'daki ASP.NET Core projesi için proje düğümünün sağ tıklama menüsünde (veya bağlam menüsünde) bulunur:

Visual Studio'da Docker Desteği menü seçeneğinin nasıl ekleneceğini gösteren ekran görüntüsü.

Visual Studio'da Docker Desteği menü seçeneğinin nasıl ekleneceğini gösteren ekran görüntüsü.

Docker desteği ekleme

Docker desteğini eklediğinizde veya etkinleştirdiğinizde Visual Studio aşağıdakini projeye ekler:

  • Dockerfile dosyası
  • dosya .dockerignore
  • Microsoft.VisualStudio.Azure.Containers.Tools.Targets için NuGet paketi başvurusu

Eklediğiniz Dockerfile aşağıdaki koda benzer. Bu örnekte proje olarak adlandırılmıştır WebApplication-Dockerve 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

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 veya Azure İşlevleri 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.

Docker desteği eklemeye yönelik Kapsayıcı İskelesi Seçenekleri iletişim kutusunu gösteren ekran görüntüsü.

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, Ö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
  • Keskili Ubuntu
  • Alpine

Not

Keskili Ubuntu görüntüsünü temel alan ve Yerel zamanından önce (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. Bkz. 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.

Dockerfile'ı seçerseniz Visual Studio aşağıdakini projeye ekler:

  • Dockerfile dosyası
  • .dockerignore dosyası
  • Microsoft.VisualStudio.Azure.Containers.Tools.Targets için NuGet paketi başvurusu

Eklediğiniz Dockerfile aşağıdaki koda benzer. Bu örnekte proje olarak adlandırılmıştır WebApplication-Dockerve 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"]

.NET SDK seçeneğini kullanarak Docker desteği ekleme

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ı launchSettings.json bir .json yapılandırma dosyasında kodlanır.

Kapsayıcı derleme türü olarak seçilen .NET SDK'sı ile Docker desteği eklemeye yönelik Kapsayıcı İskelesi Seçenekleri iletişim kutusunu gösteren ekran görüntüsü.

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'daki .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ı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+Q) kullanarak ve yazarak containersKapsayıcılar 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 dağıtılan uygulamanızı kapsayıcıda görmek için 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'da proje düğümüne sağ tıklayın ve Kapsayıcı Düzenleyici Desteği Ekle'yi > seçin. Ardından kapsayıcıları yönetmek için Docker Compose'u seçin.

Projenize kapsayıcı düzenleyici desteği ekledikten sonra, burada gösterildiği gibi projeye eklenen bir Dockerfile (henüz yoksa) ve Çözüm Gezgini'da çözüme bir docker-compose klasörü eklendiğini görürsünüz:

Visual Studio'da Çözüm Gezgini Docker dosyalarının ekran görüntüsü.

Visual Studio'da Çözüm Gezgini Docker dosyalarının ekran görüntüsü.

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. Oluşturma hizmetlerinin bir alt kümesini başlatma.

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 hata ayıklama, yerel olarak çalıştırma ve hata ayıklama ve Azure'a dağıtma.

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: Windows kapsayıcısında .NET uygulamasını Azure Service Fabric'e dağıtma.

Azure Service Fabric hakkında daha fazla bilgi için bkz . Service Fabric.

Sürekli teslim ve sürekli tümleştirme (CI/CD)

Visual Studio, otomatik ve sürekli tümleştirme ve değişikliklerin hizmet kodunuzda ve yapılandırmanızda teslim edilmesi için Azure Pipelines ile kolayca tümleştirilir. Başlamak için bkz . İlk işlem hattınızı oluşturma.

Service Fabric için bkz . Öğretici: Azure DevOps Projelerini kullanarak ASP.NET Core uygulamanızı 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 uygulamalarda hata ayıklama

Visual Studio kullanarak kapsayıcı kayıt defterine ASP.NET kapsayıcı dağıtma