Distroless, Chiseled mı Alpine mi: .NET temel imajı seçimi
Distroless, Chiseled ve Alpine sık sık birbirinin yerine konur, oysa C kütüphanesi ve çalışma zamanı modelleri farklıdır. Yazı, .NET temel imajını seçerken libc, globalization, yayın modeli ve tanılama gereksinimlerinin imaj boyutundan önce nasıl değerlendirileceğini anlatıyor. Konteyner dağıtan herkes için önemli, çünkü native kütüphaneleri ya da kültür biçimlendirmesini bozan küçük bir imaj optimize edilmiş değil, uyumsuz demektir.
Kilit noktalar
- Tipik ASP.NET Core servisleri için Ubuntu Chiseled varsayılan seçimdir; platform zaten Azure Linux üzerindeyse Azure Linux Distroless uygundur.
- Alpine kullanıyorsanız native varlıklar için musl RID'leri (linux-musl-x64, linux-musl-arm64) ile publish edin.
- Minimal etiketler ICU ve tzdata içermez; kültüre ya da saat dilimine bağlı kod için -extra etiketini seçin.
- Yayın modelini depoyla eşleştirin: framework-dependent ASP.NET Core için aspnet, self-contained ve Native AOT için runtime-deps.
- kubectl exec ile sh çalıştırmak yerine sağlık probe'ları, dotnet-monitor sidecar'ı ve geçici debug konteynerlerini önceden test edin.
- Preview etiketleri değişebilir; üretimde .NET 11 için kararlı etiket ve immutable digest sabitleyin.
Distroless, Chiseled ve Alpine çoğu zaman birbirinin yerine geçen Linux imajları gibi anılır, oysa farklıdır. Alpine; musl, BusyBox ve apk üzerine kurulu bir dağıtımdır. Distroless ise kabuk ya da paket yöneticisi içermeyen çalışma zamanı imajı anlamına gelir; Ubuntu Chiseled ve Azure Linux Distroless bu modeli glibc tabanlı sistemlerde uygular. Seçim uyumluluktan başlamalı: uygulamanın ihtiyaç duyduğu C kütüphanesi ve yerel varlıklar, ICU ve saat dilimi gereksinimleri, yayın modeli. İmaj boyutu en sonda gelir.
Tipik ASP.NET Core servisleri için rehber Ubuntu Chiseled'ı öneriyor; platform ekibi Azure Linux üzerinde çalışıyorsa Azure Linux Distroless da sağlam bir seçim, Alpine ise musl desteği bilerek test edildiğinde tercih ediliyor. Minimal varyantlarda ICU ve tzdata bulunmadığından kültüre duyarlı uygulamalar -extra etiketlerini kullanmalı. Kabuk olmadığından sorun giderme; sağlık probe'ları, tanılama sidecar'ları ve geçici debug konteynerleri önceden hazırlanarak yapılmalı.
Gerçek dünyada kullanımı
- Azure Kubernetes Service üzerinde çalışan, küçük ve non-root bir minimal ASP.NET Core API.
- Yalnızca glibc destekleyen bir görüntüleme ya da veritabanı native kütüphanesi yükleyen servis.
- -aot SDK imajıyla derlenip runtime-deps tabanında çalışan bir Native AOT konsol aracı.
Neden önemli
Küçük bir imaj ancak libc, globalization ve tanılama özellikleri son imajda da çalışıyorsa kazanç sağlar; geçişten önce bu alanları konteyner içinde test edin.
Benzer haberler
- React, .NET 10 ve Microsoft Foundry ile güvenli bir kurumsal chatDEV Community: #dotnet23 sa önce
- ASP.NET Core'da authentication ve authorization: ne zaman hangisi, güvenle nasıl yayına alınırDEV Community: #aspnetcore1 gün önce
- MCP Sunucularında Ölçekte Rate Limiting ve Kaynak YönetişimiDEV Community: #aspnetcore1 gün önce