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ü yüklü Visual Studio 2019
- .NET Core ile geliştirme için .NET Core Geliştirme Araçları .
- Bir Azure aboneliği olan Azure Container Registry'de yayımlamak için. Ü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. .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
- Web Geliştirme, Azure Araçları iş yükü ve/veya .NET masaüstü geliştirme iş yükü yüklü Visual Studio 2022
- Bir Azure aboneliği olan Azure Container Registry'de yayımlamak için. Ü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ı 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:
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. > Ekle ve > 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:
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-Docker
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
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.
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-Docker
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 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.
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ı 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 dağıtılan uygulamanızı kapsayıcıda görmek için uygulama klasörünü genişletin.
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:
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