.NET ve Docker’a Giriş
Kapsayıcılar, Docker, Kubernetes ve Podman gibi araçlarla bulut uygulamalarını dağıtmanın ve barındırmanın en popüler yollarından biridir. Birçok geliştirici kapsayıcıları seçer çünkü bir uygulamayı bağımlılıklarıyla paketlemek ve bu uygulamanın herhangi bir kapsayıcı konağından güvenilir bir şekilde çalıştırılmasını sağlamak kolaydır. Kapsayıcılarla .NET kullanımına yönelik kapsamlı destek vardır.
Docker, kapsayıcılara harika bir genel bakış sağlar. Docker Desktop: Community Edition , geliştirici masaüstü makinesinde kapsayıcıları kullanmak için iyi bir araçtır.
.NET görüntüleri
Resmi .NET kapsayıcı görüntüleri Microsoft Yapıt Kayıt Defteri yayımlanır ve Docker Hub'da bulunabilir. Linux (Alpine, Debian, Ubuntu, Mariner) ve Windows için kodunuzu oluşturmaya yönelik üretim ve SDK görüntüleri için çalışma zamanı görüntüleri vardır. Daha fazla bilgi için bkz . .NET kapsayıcı görüntüleri.
.NET görüntüleri, yeni bir .NET düzeltme eki yayımlandığında veya bir işletim sistemi temel görüntüsü güncelleştirildiğinde düzenli olarak güncelleştirilir.
Keskili kapsayıcı görüntüleri , .NET çalışma zamanı için gereken en az bileşen kümesine sahip Ubuntu kapsayıcı görüntüleridir. Bu görüntüler normal Ubuntu görüntülerinden yaklaşık 100 MB daha küçüktür ve daha az bileşene sahip olduklarından daha az CVE'ye sahiptir. Özellikle, güvenlik profillerini önemli ölçüde geliştiren bir kabuk veya paket yöneticisi içermezler. Bunlar ayrıca kök olmayan bir kullanıcı içerir ve bu kullanıcı etkin olarak yapılandırılır.
Kapsayıcı görüntüleri oluşturma
Dockerfile ile kapsayıcı görüntüsü oluşturabilir veya görüntü oluşturmak için .NET SDK'sını kullanabilirsiniz. Görüntü oluşturma örnekleri için bkz . dotnet/dotnet-docker ve dotnet/sdk-container-builds.
Aşağıdaki örnek, birkaç hızlı adımda (.NET 8 ve .NET 7.0.300 ile desteklenir) kapsayıcı görüntüsü oluşturmayı ve çalıştırmayı gösterir.
$ dotnet new webapp -o webapp
$ cd webapp/
$ dotnet publish -t:PublishContainer
MSBuild version 17.8.3+195e7f5a3 for .NET
Determining projects to restore...
All projects are up-to-date for restore.
webapp -> /home/rich/webapp/bin/Release/net8.0/webapp.dll
webapp -> /home/rich/webapp/bin/Release/net8.0/publish/
Building image 'webapp' with tags 'latest' on top of base image 'mcr.microsoft.com/dotnet/aspnet:8.0'.
Pushed image 'webapp:latest' to local registry via 'docker'.
$ docker run --rm -d -p 8000:8080 webapp
7c7ad33409e52ddd3a9d330902acdd49845ca4575e39a6494952b642e584016e
$ curl -s http://localhost:8000 | grep ASP.NET
<p>Learn about <a href="https://learn.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7c7ad33409e5 webapp "dotnet webapp.dll" About a minute ago Up About a minute 0.0.0.0:8000->8080/tcp, :::8000->8080/tcp jovial_shtern
$ docker kill 7c7ad33409e5
docker init
Dockerfiles kullanmak isteyen geliştiriciler için yeni bir seçenektir.
Bağlantı Noktaları
Bağlantı noktası eşlemesi , kapsayıcıları kullanmanın önemli bir parçasıdır. Dış web isteklerine yanıt vermek için bağlantı noktalarının kapsayıcı dışında yayımlanması gerekir. ASP.NET Core kapsayıcı görüntüleri varsayılan olarak bağlantı noktasında 8080
dinlemek için .NET 8'de değiştirildi. .NET 6 ve 7, bağlantı noktasında 80
dinler.
ile docker run
önceki örnekte konak bağlantı noktası kapsayıcı bağlantı noktasına 8000
8080
eşlenir. Kubernetes de benzer şekilde çalışır.
Bu ASPNETCORE_HTTP_PORTS
davranışı yapılandırmak için , ASPNETCORE_HTTPS_PORTS
ve ASPNETCORE_URLS
ortam değişkenleri kullanılabilir.
Kullanıcılar
.NET 8'den başlayarak, tüm görüntüler adlı app
kök olmayan bir kullanıcı içerir. Varsayılan olarak, keskili görüntüler bu kullanıcı etkinken yapılandırılır. Uygulamayı .NET kapsayıcısı olarak yayımlama özelliği (Kapsayıcı görüntüleri oluşturma bölümünde gösterilmiştir) ayrıca bu kullanıcı varsayılan olarak etkinken görüntüleri yapılandırır. Diğer tüm senaryolarda kullanıcıapp
, örneğin Dockerfile yönergesi USER
ile el ile ayarlanabilir. ile bir görüntü yapılandırıldıysa app
ve komutların olarak root
USER
çalıştırılması gerekiyorsa, yönerge kullanıcıya root
olarak ayarlamak için kullanılabilir.
Bilgi sahibi olun
Kapsayıcıyla ilgili haberler dotnet/dotnet-docker tartışmalarına ve .NET Blog "kapsayıcılar" kategorisine gönderilir.
Azure hizmetleri
Çeşitli Azure hizmetleri kapsayıcıları destekler. Uygulamanız için bir Docker görüntüsü oluşturur ve bunu aşağıdaki hizmetlerden birine dağıtırsınız:
Azure Kubernetes Service (AKS)
Kubernetes kullanarak Windows ve Linux kapsayıcılarını ölçeklendirme ve düzenleme.Azure App Service
PaaS ortamında kapsayıcıları kullanarak web uygulamaları veya API'ler dağıtın.Azure Container Apps
Sunucuları, düzenlemeyi veya altyapıyı yönetmeden kapsayıcı iş yüklerinizi çalıştırın ve gözlemlenebilirlik ve sıfıra ölçeklendirme için Dapr ve KEDA için yerel desteklerden yararlanın.Azure Container Instances
Daha üst düzey yönetim hizmetleri olmadan bulutta tek tek kapsayıcılar oluşturun.Azure Batch
Kapsayıcıları kullanarak yinelenen işlem işlerini çalıştırın.Azure Service Fabric
Windows ve Linux kapsayıcılarını kullanarak .NET uygulamalarını mikro hizmetlere kaldırın, shift ve modernleştirin.Azure Container Registry
Tüm Azure dağıtımı türlerinde kapsayıcı görüntüleri depolayın ve yönetin.