Özel konteyner görüntüleri, işlevlerinizi Function Compute içinde konteyner görüntüleri olarak dağıtmanıza olanak tanır; bu sayede düşük maliyetli geçiş, katmanlı önbellekleme ve CI/CD entegrasyonu mümkün olur.
Avantajlar
Function Compute, işlev teslimatı olarak özel konteyner görüntülerini destekler:
Kod değişikliği veya ikili dosyaların yeniden derlenmesi gerektirmeden düşük maliyetli geçiş imkanı sunar. Paylaşılan nesne dosyaları (*.so), geliştirme ve üretim ortamlarının tutarlı kalmasını sağlar.
Kodu ve bağımlılıkları birlikte paketleyerek dağıtım ve yayınlama sürecini basitleştirir.
Katmanlı önbellekleme sayesinde kod yükleme ve çekme verimliliğini artırır.
Üçüncü taraf kütüphanelerin ve kodun standart şekilde oluşturulması, paylaşılması ve sürümlendirilmesi için açık kaynaklı CI/CD araçlarından yararlanmanızı sağlar.
Function Compute ile HTTP üzerinden iletişim kurmanıza olanak tanır.
Etkileşimli olmayan (non-interactive) görüntüleri çalıştırabilirsiniz.
Çalışma mantığı
Function Compute bir örneği başlatmadan önce, işlevin hizmet rolünü üstlenir ve görüntüyü çekmek için geçici bir kullanıcı adı ve parola edinir. Görüntü çekildikten sonra, belirtilen Command ve Args parametreleriyle konteyner başlatılır.
Konteyner görüntüsü bir HTTP sunucusu içermelidir. Function Compute, yapılandırılan CAPort üzerinden özel HTTP sunucunuzu dinler. Bu sunucu, API çağrıları ve HTTP çağrıları dahil olmak üzere Function Compute yönelik tüm istekleri işler. İşlevler iki şekilde çağrılabilir:
Bir API çağrısı ile işlevi çağırma

Bir HTTP isteği ile işlevi çağırma

Sınırlamalar
Görüntü boyutu sınırı
ACR Kişisel Sürüm veya Kurumsal Sürüm (Temel, Standart veya Premium) için sıkıştırılmamış maksimum görüntü boyutu CPU örneklerinde 10 GB, GPU hızlandırmalı örneklerde ise 15 GB'dır.
Görüntü deposu
Function Compute, Container Registry Kişisel Sürüm ve Kurumsal Sürüm depolarındaki görüntüleri destekler.
ACR Ekonomi Sürümü görüntü hızlandırmayı desteklemez ve Function Compute ile uyumlu değildir. ACR Kişisel Sürüm veya Kurumsal Sürüm (Temel, Standart veya Premium) örneklerinden gelen görüntüleri kullanın.
Görüntü erişimi
Aynı bölge içinde yalnızca ACR Kişisel Sürümdeki genel görüntülere hesaplar arası erişim sağlanabilir. Diğer tüm görüntüler, aynı hesap ve bölgedeki özel depolarla sınırlıdır.
Konteynerlerdeki dosya okuma ve yazma izinleri
Konteynerler varsayılan olarak root (UID=0) kullanıcısı olarak çalışır. Dockerfile içinde bir kullanıcı belirtilirse konteyner bu kullanıcıyla çalışır.
Konteynerler için yazılabilir katman depolama sınırı
Konteyner yazılabilir katmanı, işlevin gelişmiş yapılandırmasındaki disk boyutuna bağlı olarak 512 MB veya 10 GB ile sınırlıdır. İşlev oluşturma.
Yazılabilir katman verileri kalıcı değildir ve konteyner yok edildiğinde silinir. Kalıcı depolama için Function Compute içinde bir NAS dosya sistemi veya OSS paketi bağlayın. NAS dosya sistemini yapılandırma. Object Storage Service'i yapılandırma. Tablestore gibi diğer paylaşımlı depolama hizmetleri de desteklenir.
Görüntü mimarisi sınırı
Şu anda Function Compute yalnızca AMD64 görüntülerini destekler. ARM tabanlı makinelerde (örneğin Apple çipli Mac'ler) derleme platformunu linux/amd64 olarak belirtin. Örnek komut: docker build --platform linux/amd64 -t $IMAGE_NAME ..
Doğrulamak için docker inspect komutunu çalıştırın. Çıktıda "Architecture" : "amd64" ifadesi yer alıyorsa görüntü doğrudur.
HTTP sunucusu gereksinimleri
Bu gereksinimler, web sunucusu içeren özel konteyner işlevleri için geçerlidir:
-
HTTP sunucusu
0.0.0.0:CAPortveya*:CAPortadreslerini dinlemelidir. Hizmet127.0.0.1:CAPortadresini dinlerse istekler zaman aşımına uğrar ve aşağıdaki hata oluşur:{ "ErrorCode":"FunctionNotStarted", "ErrorMessage":"TheCA'shttpservercannotbestarted:ContainerStartDuration:25000000000.PingCAfaileddueto:dialtcp21.0.XX.XX:9000:getsockopt:connectionrefusedLogs:2019-11-29T09:53:30.859837462ZListeningonport9000" }Dinleyici bağlantı noktası varsayılan olarak 9000'dir ve
CAPortözelliği ile yapılandırılır. HTTP sunucunuz aynı bağlantı noktasını dinlemelidir. -
Sunucu, 15 dakika veya daha uzun bir istek zaman aşımı süresiyle
Connection: Keep-Aliveözelliğini desteklemelidir:// For example, when using Express in Node.js. var server = app.listen(PORT, HOST); server.timeout = 0; // never timeout server.keepAliveTimeout = 0; // keepalive, never timeout HTTP sunucusu 120 saniye içinde başlamalıdır.
Ortak istek üst bilgileri
Özel konteyner görüntüleri, özel çalışma zamanlarıyla aynı istek üst bilgilerini kullanır. Function Compute içindeki ortak istek üst bilgileri.
Günlük biçimi
Özel konteyner görüntülerinden gelen tüm stdout günlükleri, belirttiğiniz Simple Log Service projesi tarafından otomatik olarak toplanır. Günlük kaydı özelliğini yapılandırma.
Özel konteyner görüntüleri, özel çalışma zamanlarıyla aynı günlük biçimini kullanır. İşlev günlük biçimi.
Soğuk başlatma optimizasyonu
Konteyner görüntülerinin indirilmesi ve açılması kod paketlerine göre daha uzun sürer. Soğuk başlatma gecikme süresini azaltmak için:
Çekme gecikme süresini azaltmak ve kararlılığı artırmak amacıyla Function Compute ile aynı bölgede bulunan bir VPC görüntü adresi kullanın.
Görüntü boyutunu en aza indirin. Alpine veya Ubuntu gibi minimal bir temel görüntü kullanın ve yalnızca gerekli bağımlılıkları ekleyin.
Konteynerleri sıcak tutmak için hazırlanmış örnekler kullanın. Minimum örnek sayısı esneklik ilkesini yapılandırma.
İş parçacığı güvenli işlevler için, kaynaklarınız izin veriyorsa soğuk başlatmaları ve maliyetleri azaltmak amacıyla tek örnek eşzamanlılığını etkinleştirin. Web işlevi oluşturma.
Faturalama
Özel konteyner görüntüleri, diğer çalışma zamanlarıyla aynı faturalama modelini takip eder. Faturalamaya genel bakış.
Görüntü çekme süresi, kaynağın başlangıcından bitişine kadar hesaplanan kaynak kullanımına dahildir. Örneğin, bir görüntüyü çekmesi 10 saniye süren 1.024 MB'lık bir örnek 10 GB-saniye kullanır.
Görüntüler belirli bir süre önbellekte tutulduğundan çekme ücretleri her soğuk başlatmada uygulanmaz.