.NET ve Docker'a giriş
Kapsayıcılar, Docker, Kubernetesve Podmangibi 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 kullanarak
Docker, kapsayıcılar harika bir
.NET görüntüleri
Resmi .NET kapsayıcı görüntüleri, Microsoft Artifact Registry üzerinde yayınlanır ve Docker Hubüzerinde bulunabilir. Linux (Alpine, Debian, Ubuntu, Mariner) ve Windows için kodunuzu oluşturmaya üretim ve
.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.
Yontulmuş 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
Konteyner görüntüleri oluşturma
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.
Portlar
Bağlantı noktası eşleme, kapsayıcıları kullanmanın önemli bir parçasıdır. Dış web isteklerine yanıt vermek için portların kapsayıcı dışında yayımlanması gerekir. ASP.NET Core kapsayıcı görüntüleri varsayılan olarak .NET 88080
bağlantı noktasında dinlemek üzere değiştirilmiştir. .NET 6 ve 7, port 80
üzerinde dinler.
Önceki örnekte docker run
, konak bağlantı noktası 8000
'den kapsayıcı bağlantı noktası 8080
'ye eşlenmiştir. Kubernetes de benzer şekilde çalışır.
bu davranışı yapılandırmak için ASPNETCORE_HTTP_PORTS
, 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 app
adlı 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 etkinleştirildiğinde görüntüleri yapılandırır. Diğer tüm senaryolarda app
kullanıcı, örneğin USER
Dockerfile yönergesiyle el ile ayarlanabilir. Bir görüntü app
ile yapılandırıldıysa ve komutların root
olarak çalıştırılması gerekiyorsa, USER
yönergesi kullanıcıya root
olarak ayarlamak için kullanılabilir.
Bilgi sahibi olun
Kapsayıcıyla ilgili haberler,
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 & Linux kapsayıcılarını ölçeklendirin 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 & Linux kapsayıcılarını kullanarak .NET uygulamalarını mikro hizmetlere kaldırın, shift ve modernleştirin.Azure Container Registry
Kapsayıcı görüntülerini her tür Azure dağıtımında depolayın ve yönetin.