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.
.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.
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.
Bash
$ 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.
ile docker runönceki örnekte konak bağlantı noktası kapsayıcı bağlantı noktasına 80008080eşlenir. Kubernetes de benzer şekilde çalışır.
Bu ASPNETCORE_HTTP_PORTSdavranışı yapılandırmak için , ASPNETCORE_HTTPS_PORTSve ASPNETCORE_URLS ortam değişkenleri kullanılabilir.
Kullanıcılar
.NET 8'den başlayarak, tüm görüntüler adlı appkö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 USERile el ile ayarlanabilir. ile bir görüntü yapılandırıldıysa app ve komutların olarak rootUSER çalıştırılması gerekiyorsa, yönerge kullanıcıya rootolarak ayarlamak için kullanılabilir.
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.
Bu içeriğin kaynağı GitHub'da bulunabilir; burada ayrıca sorunları ve çekme isteklerini oluşturup gözden geçirebilirsiniz. Daha fazla bilgi için katkıda bulunan kılavuzumuzu inceleyin.
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin:
Build end-to-end solutions in Microsoft Azure to create Azure Functions, implement and manage web apps, develop solutions utilizing Azure storage, and more.