Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, kapsayıcıları yönetme veya Azure Container Instances dağıtmayla ilgili yaygın sorunların nasıl giderılacağı gösterilmektedir. Ayrıca bkz . Sık sorulan sorular.
Daha fazla desteğe ihtiyacınız varsa Azure portalında sağlanan Yardım + destek seçeneklerine bakın.
Kapsayıcı grubu dağıtımı sırasında karşılaşılan sorunlar
Adlandırma kuralları
Kapsayıcı belirtiminizi tanımlarken, belirli parametreler adlandırma kısıtlamalarına uymayı gerektirir. Aşağıdaki tabloda kapsayıcı grubu özelliklerine özgü gereksinimler gösterilmektedir. Daha fazla bilgi için bkz. Azure Mimari Merkezi'ndeki Adlandırma kuralları ve Azure kaynakları için adlandırma kuralları ve kısıtlamaları.
| Scope | Uzunluk | Kasa | Geçerli karakterler | Önerilen düzen | Example |
|---|---|---|---|---|---|
| Kapsayıcı adı1 | 1-63 | Küçük harf | Alfanümerik karakterler ve kısa çizgi; ilk veya son karakter hariç herhangi bir konumda | <name>-<role>-container<number> |
web-batch-container1 |
| Konteyner limanları | 1 ile 65535 arasında | Tamsayı | 1 ile 65535 arasındaki tamsayı | <port-number> |
443 |
| DNS isim etiketi | 5-63 | Büyük-küçük harfe duyarsız | İlk veya son karakter dışında herhangi bir yerde alfasayısal ve kısa çizgi | <name> |
frontend-site1 |
| Ortam değişkeni | 1-63 | Büyük-küçük harfe duyarsız | İlk veya son karakter hariç herhangi bir konumda harf, rakam ve alt çizgi (_) | <name> |
MY_VARIABLE |
| Birim adı | 5-63 | Küçük harf | İlk veya son karakter hariç herhangi bir yerde alfanümerik karakterler ve tireler. Art arda iki kısa çizgi içeremez. | <name> |
batch-output-volume |
1Kapsayıcı örneklerinden bağımsız olarak belirtilmeyen kapsayıcı grubu adları için de kısıtlama (örneğin az container create , komut dağıtımları).
Görüntünün işletim sistemi sürümü desteklenmiyor
Azure Container Instances desteklemeyen bir görüntü belirtirseniz bir OsVersionNotSupported hata döndürülür. Hata aşağıdakine benzer; burada {0} dağıtmaya çalıştığınız görüntünün adıdır:
{
"error": {
"code": "OsVersionNotSupported",
"message": "The OS version of image '{0}' is not supported."
}
}
Bu hatayla çoğunlukla, desteklenmeyen Semi-Annual Channel 1709 veya 1803 sürümlerini temel alan Windows görüntüleri dağıtılırken karşılaşılır. Azure Container Instances'da desteklenen Windows görüntüleri için bkz. Sık sorulan sorular.
Görüntü çekilemiyor
Azure Container Instances başlangıçta imajınızı çekemezse, bir süre boyunca yeniden denemeyi sürdürür. Görüntü çekme işlemi başarısız olursa, ACI sonunda dağıtımı başarısız olur ve bir Failed to pull image hata görebilirsiniz.
Bu sorunu çözmek için kapsayıcı örneğini silin ve dağıtımınızı yeniden deneyin. Görüntünün kayıt defterinde bulunduğundan ve görüntü adını doğru yazdığınızdan emin olun.
Important
ACI, özel uç nokta ve yönetilen kimlikle Azure Container Registry (ACR) kullanırken yalnızca özel kayıt defterlerinden (genel IP olmayan kayıt defterleri) görüntü çekmeyi destekler. ACI ile kayıt defteri arasında sanal ağ bağlantısı yapılandırılsa bile, ACR olmayan özel kayıt defterlerinden görüntü çekme desteklenmez. Özel kayıt defteri kullanmanız gerekiyorsa görüntülerinizi ACR'ye geçirin ve yönetilen kimlikleözel bir uç nokta yapılandırın. Daha fazla bilgi için bkz. Sanal ağ senaryoları ve kaynakları - Desteklenmeyen ağ senaryoları.
Görüntü çekilemiyorsa az container show çıkışında aşağıdaki gibi olaylar gösterilir:
"events": [
{
"count": 3,
"firstTimestamp": "2017-12-21T22:56:19+00:00",
"lastTimestamp": "2017-12-21T22:57:00+00:00",
"message": "pulling image \"mcr.microsoft.com/azuredocs/aci-hellowrld\"",
"name": "Pulling",
"type": "Normal"
},
{
"count": 3,
"firstTimestamp": "2017-12-21T22:56:19+00:00",
"lastTimestamp": "2017-12-21T22:57:00+00:00",
"message": "Failed to pull image \"mcr.microsoft.com/azuredocs/aci-hellowrld\": rpc error: code 2 desc Error: image t/aci-hellowrld:latest not found",
"name": "Failed",
"type": "Warning"
},
{
"count": 3,
"firstTimestamp": "2017-12-21T22:56:20+00:00",
"lastTimestamp": "2017-12-21T22:57:16+00:00",
"message": "Back-off pulling image \"mcr.microsoft.com/azuredocs/aci-hellowrld\"",
"name": "BackOff",
"type": "Normal"
}
],
Kaynak kullanılamıyor hatası
Azure'da değişen bölgesel kaynak yükü nedeniyle, bir kapsayıcı örneğini dağıtmaya çalışırken aşağıdaki hatayı alabilirsiniz:
The requested resource with 'x' CPU and 'y.z' GB memory is not available in the location 'example region' at this moment. Please retry with a different resource request or in another location.
Bu hata, dağıtım yapmaya çalıştığınız bölgedeki yoğun yük nedeniyle kapsayıcınız için belirtilen kaynakların o anda ayrılamadığını gösterir. Sorununuzu çözmeye yardımcı olmak için aşağıdaki risk azaltma adımlarından birini veya daha fazlasını kullanın.
- Kapsayıcı dağıtım ayarlarınızın Azure Container Instances için Bölge kullanılabilirliği bölümünde tanımlanan parametrelere uygun olduğunu doğrulayın
- Kapsayıcı için daha düşük CPU ve bellek ayarları belirtme
- Farklı bir Azure bölgesine dağıtma
- Daha sonra dağıt
Kapsayıcı grubu çalışma zamanı sırasında karşılaşılan sorunlar
Kapsayıcı, açık kullanıcı girişi olmadan yalıtılmış bir yeniden başlatma işlemine sahip oldu
Kapsayıcı grubunun açık kullanıcı girişi olmadan neden yeniden başlatılabileceğinin iki geniş kategorisi vardır. İlk olarak, kapsayıcılar bir uygulama sürecinin çökmesi nedeniyle yeniden başlatılabilir. ACI hizmeti, uygulamanın neden sorunlarla karşılaştığını belirlemek için Application Insights SDK'sı, kapsayıcı grubu ölçümleri ve kapsayıcı grubu günlükleri gibi gözlemlenebilirlik çözümlerinin uygulanmasını önerir. İkincisi, müşteriler bakım olayları nedeniyle ACI altyapısı tarafından başlatılan yeniden başlatmalarla karşılaşabilir. Uygulamanızın kullanılabilirliğini artırmak için Application Gateway veya Traffic Manager gibi bir giriş bileşeninin arkasında birden çok kapsayıcı grubu çalıştırın.
Kapsayıcı sürekli olarak çıkar ve yeniden başlatılır (uzun süre çalışan işlem yoktur)
Kapsayıcı grupları varsayılan olarak Alwaysyeniden başlatma ilkesine sahiptir, bu nedenle kapsayıcı grubundaki kapsayıcılar tamamlanmaya kadar çalıştırıldıktan sonra her zaman yeniden başlatılır. Görev tabanlı kapsayıcıları çalıştırmak istiyorsanız bunu OnFailure veya Never olarak değiştirmeniz gerekebilir. OnFailure belirtirseniz ve yine de sürekli yeniden başlatmalar görürseniz, kapsayıcınızda yürütülen uygulama veya betikle ilgili bir sorun olabilir.
Not
Never yeniden başlatma ilkesi, yalnızca bir kapsayıcı 0 çıkış koduyla başarıyla sonlandığında yeniden başlatmaları engeller. Kapsayıcıdan sıfır olmayan bir çıkış koduyla çıkılırsa platform yine de kapsayıcıyı yeniden başlatabilir. Daha fazla bilgi için bkz. Sıfır olmayan çıkış kodlarıyla yeniden başlatma davranışı.
Kapsayıcı gruplarını uzun süre çalışan işlemler olmadan çalıştırdığınızda, Ubuntu veya Alpine gibi görüntülerle yinelenen çıkışlar ve yeniden başlatmalar görebilirsiniz. EXEC aracılığıyla bağlanmak işe yaramaz, çünkü kapsayıcıyı çalışır durumda tutan bir süreç yoktur. Bu sorunu çözmek için kapsayıcıyı çalışır durumda tutmak için kapsayıcı grubu dağıtımınıza aşağıdaki örnek gibi bir başlangıç komutu ekleyin.
## Deploying a Linux container
az container create -g MyResourceGroup --name myapp --image ubuntu --command-line "tail -f /dev/null"
## Deploying a Windows container
az container create -g myResourceGroup --name mywindowsapp --os-type Windows --image mcr.microsoft.com/windows/servercore:ltsc2019
--command-line "ping -t localhost"
Container Instances API ve Azure portalı bir restartCount özellik içerir. Kapsayıcının yeniden başlatma sayısını denetlemek için Azure CLI az container show komutunu kullanabilirsiniz. Kısa olması için kesilen aşağıdaki örnek çıktıda, çıkışın sonunda özelliğini görürsünüz restartCount .
...
"events": [
{
"count": 1,
"firstTimestamp": "2017-11-13T21:20:06+00:00",
"lastTimestamp": "2017-11-13T21:20:06+00:00",
"message": "Pulling: pulling image \"myregistry.azurecr.io/aci-tutorial-app:v1\"",
"type": "Normal"
},
{
"count": 1,
"firstTimestamp": "2017-11-13T21:20:14+00:00",
"lastTimestamp": "2017-11-13T21:20:14+00:00",
"message": "Pulled: Successfully pulled image \"myregistry.azurecr.io/aci-tutorial-app:v1\"",
"type": "Normal"
},
{
"count": 1,
"firstTimestamp": "2017-11-13T21:20:14+00:00",
"lastTimestamp": "2017-11-13T21:20:14+00:00",
"message": "Created: Created container with id bf25a6ac73a925687cafcec792c9e3723b0776f683d8d1402b20cc9fb5f66a10",
"type": "Normal"
},
{
"count": 1,
"firstTimestamp": "2017-11-13T21:20:14+00:00",
"lastTimestamp": "2017-11-13T21:20:14+00:00",
"message": "Started: Started container with id bf25a6ac73a925687cafcec792c9e3723b0776f683d8d1402b20cc9fb5f66a10",
"type": "Normal"
}
],
"previousState": null,
"restartCount": 0
...
}
Not
Linux dağıtımları için kapsayıcı görüntülerinin çoğu bash gibi bir kabuğu varsayılan komut olarak ayarlar. Tek başına bir kabuk uzun süre çalışan bir hizmet olmadığından, varsayılan Her zaman yeniden başlatma ilkesiyle yapılandırıldığında bu kapsayıcılar hemen çıkar ve yeniden başlatma döngüsüne girer.
Kapsayıcının başlatılması uzun zaman alıyor
Azure Container Instances'ta kapsayıcı başlatma süresine katkıda bulunan üç temel faktör şunlardır:
Windows görüntülerin dikkate alınması gereken başka noktalar da vardır.
Görüntü boyutu
Kapsayıcınızın başlaması uzun sürüyor ancak sonunda başarılı oluyorsa, ilk olarak kapsayıcı imajınızın boyutunu inceleyin. Azure Container Instances kapsayıcı görüntünüzü isteğe bağlı olarak çektiğinden, gördüğünüz başlangıç süresi doğrudan boyutuyla ilgilidir.
Docker CLI'daki komutunu kullanarak docker images kapsayıcı görüntünüzün boyutunu görüntüleyebilirsiniz:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mcr.microsoft.com/azuredocs/aci-helloworld latest 7367f3256b41 15 months ago 67.6MB
Görüntü boyutlarını küçük tutmanın anahtarı, son görüntünüzün çalışma zamanında gerekli olmayan hiçbir şey içermemesini sağlamaktır. Bunu yapmanın bir yolu çok aşamalı derlemeler kullanmaktır. Çok aşamalı derlemeler, son görüntünün derleme zamanında gerekli olan ek içeriklerden hiçbirini değil yalnızca uygulamanız için ihtiyacınız olan yapıtları içermesini kolaylaştırır.
Görüntü konumu
Görüntü çekme işleminin kapsayıcınızın başlangıç zamanı üzerindeki etkisini azaltmanın bir diğer yolu da kapsayıcı görüntüsünü kapsayıcı örneklerini dağıtmayı planladığınız bölgede Azure Container Registry barındırmaktır. Bu, kapsayıcı görüntüsünün ilerlemesi için gereken ağ yolunu kısaltır ve indirme süresini önemli ölçüde kısaltır.
Önbelleğe alınmış görüntüler
Azure Container Instances, nanoserver:1809, servercore:ltsc2019 ve servercore:1809 dahil olmak üzere yaygın Windows temel görüntüleri üzerine oluşturulmuş görüntüler için kapsayıcı başlatma süresini hızlandırmaya yardımcı olan bir önbelleğe alma mekanizması kullanır. ve gibi ubuntu:1604alpine:3.6 yaygın olarak kullanılan Linux görüntüleri de önbelleğe alınır. Hem Windows hem de Linux görüntüleri için latest etiketini kullanmaktan kaçının. Yol gösterici olması için Container Registry’nin İmaj etiketiyle ilgili en iyi uygulamalarını gözden geçirin. Önbelleğe alınmış imajların ve etiketlerin güncel listesini görüntülemek için Önbelleğe Alınan İmajları Listele API’sini kullanın.
Not
Azure Container Instances'da Windows Server 2019 tabanlı görüntülerin kullanımı önizleme aşamasındadır.
Windows kapsayıcıları ağın hazır duruma gelmesini yavaşlatır
Windows kapsayıcıları ilk oluşturulduklarında, 30 saniyeye kadar (veya nadir durumlarda daha uzun süre) gelen ya da giden ağ bağlantısına sahip olmayabilir. Kapsayıcı uygulamanızın İnternet bağlantısına ihtiyacı varsa, 30 saniyenin İnternet bağlantısı kurmasına izin vermek için gecikme ve yeniden deneme mantığı ekleyin. İlk kurulumdan sonra kapsayıcı ağ iletişimi uygun şekilde yeniden başlamalıdır.
Altta yatan Docker API’sine bağlanılamıyor veya ayrıcalıklı kapsayıcılar çalıştırılamıyor
Azure Container Instances, kapsayıcı gruplarını barındıran temel altyapıya doğrudan erişimi sunmaz. Bu kapsayıcı çalışma zamanına erişimi, düzenleme teknolojisini ve ayrıcalıklı kapsayıcı işlemlerini çalıştırmayı içerir. ACI'nin hangi işlemleri desteklediğini görmek için REST başvuru belgelerine bakın. Eksik bir şey varsa ACI geri bildirim forumlarına bir istek gönderin.
Eşleşmeyen bağlantı noktaları nedeniyle kapsayıcı grubu IP adresine erişilemiyor olabilir
Azure Container Instances, normal docker yapılandırması gibi bağlantı noktası eşlemesini henüz desteklemez. Kapsayıcı grubunun IP adresine erişilmesi gerektiğini düşündüğünüz hâlde erişemiyorsanız, kapsayıcı görüntünüzü, kapsayıcı grubunuzda ports özelliğiyle açığa çıkardığınız bağlantı noktalarının aynılarında dinleyecek şekilde yapılandırdığınızdan emin olun.
Azure Container Instances'ın kapsayıcı görüntünüzde yapılandırdığınız bağlantı noktasını dinleyebildiğini onaylamak istiyorsanız, bağlantı noktasını kullanıma sunan aci-helloworld görüntüsünün bir dağıtımını test edin. Ayrıca uygulamayı çalıştırarak aci-helloworld bağlantı noktasında dinlemesini sağlayın.
aci-helloworld, dinlediği varsayılan 80 numaralı bağlantı noktasını geçersiz kılmak için isteğe bağlı PORT ortam değişkenini destekler. Örneğin, 9000 numaralı bağlantı noktasını test etmek için kapsayıcı grubunu oluştururken ortam değişkenini ayarlayın:
Kapsayıcı grubunu 9000 numaralı bağlantı noktasını dışarı açacak şekilde ayarlayın ve bağlantı noktası numarasını ortam değişkeninin değeri olarak iletin. Örnek, Bash kabuğu için biçimlendirilmiştir. PowerShell veya Komut İstemi gibi başka bir kabuk tercih ediyorsanız değişken atama biçimini buna göre ayarlamanız gerekir.
az container create --resource-group myResourceGroup \ --name mycontainer --image mcr.microsoft.com/azuredocs/aci-helloworld \ --ip-address Public --ports 9000 \ --environment-variables 'PORT'='9000'komut çıkışında
az container createkapsayıcı grubunun IP adresini bulun. ip değerini arayın.Kapsayıcı başarıyla sağlandıktan sonra, tarayıcınızda kapsayıcı uygulamasının IP adresine ve bağlantı noktasına göz atın, örneğin:
192.0.2.0:9000.Web uygulaması tarafından görüntülenen "Azure Container Instances hoş geldiniz!" iletisini görmeniz gerekir.
Kapsayıcıyla işiniz bittiğinde, kapsayıcıyı
az container deletekomutunu kullanarak kaldırın:az container delete --resource-group myResourceGroup --name mycontainer
Gizli kapsayıcı grubu dağıtımları sırasında karşılaşılan sorunlar
Özel CCE ilkesi kullanılırken ilke hataları
Özel CCE ilkeleri Azure CLI confcom uzantısı oluşturulmalıdır. İlkeyi oluşturmadan önce ARM şablonunuzda belirtilen tüm özelliklerin geçerli olduğundan ve gizli bilgi işlem ilkesinde temsil edilmesini beklediğiniz özelliklerle eşleştiğinden emin olun. Doğrulanması gereken bazı özellikler arasında kapsayıcı görüntüsü, ortam değişkenleri, birim bağlamaları ve kapsayıcı komutları bulunur.
Politikada hash eksik
Azure CLI confcom uzantısı, yerel makinenizde uzaktan kullanılabilenlerle eşleşmeyen önbelleğe alınmış görüntüler kullanır ve bu da ilke doğrulandığında katman uyumsuzluğuna neden olabilir. Eski görüntüleri kaldırdığınızdan ve en son kapsayıcı görüntülerini yerel ortamınıza çektiğinizden emin olun. En son SHA'ya sahip olduğunuzdan emin olduktan sonra CCE ilkesini yeniden oluşturmanız gerekir.
İşlem/kapsayıcı çıkış koduyla sonlandırıldı: 139
Bu çıkış kodu, Ubuntu Sürüm 22.04 temel görüntüsüyle ilgili sınırlamalardan dolayı oluşur. Öneri, bu sorunu çözmek için farklı bir temel görüntü kullanmaktır.
Kapsayıcı çıkış kodları
Azure Container Instances'daki bir kapsayıcı sonlandırıldığında platform, işlemin neden durdurulduğunu gösteren bir çıkış kodu bildirir. az container show komutunu kullanarak veya kapsayıcıolayları altındaki Azure portalında > kapsayıcı olaylarını denetleyerek çıkış kodlarını görüntüleyebilirsiniz.
Aşağıdaki tabloda karşılaşabileceğiniz yaygın çıkış kodları açıklanmaktadır:
| Çıkış kodu | Description |
|---|---|
| 0 | İşlem başarıyla tamamlandı. Hata oluşmadi. |
| 1 | İşlem genel bir uygulama hatası nedeniyle sonlandırıldı. Daha fazla ayrıntı için uygulama günlüklerinizi denetleyin. |
| 137 | İşlem zorla sonlandırıldı (SIGKILL). Bu koşul genellikle kapsayıcı bellek sınırını aştığında oluşur. Kapsayıcınız için bellek ayırma miktarını artırmayı göz önünde bulundurun. |
| 139 | İşlem bir segmentasyon hatasıyla (SIGSEGV) karşılaştı. Bu hataya Ubuntu 22.04 gibi temel görüntü sınırlamaları neden olabilir. Farklı bir temel görüntü kullanmayı deneyin. |
| 7147 | Platform, sonlandırma sinyali göndererek kapsayıcıyı düzgün bir şekilde kapattı. Bu kod, kapsayıcı olaylarındaki "Kapsayıcıyı sonlandırma (platform tarafından başlatılan)" iletilerine karşılık gelir. |
| 7148 | Platform kapsayıcıyı zorla sonlandırdı. Bu koşul genellikle kapsayıcının ilk sonlandırma sinyalini aldıktan sonra zamanında yanıt vermediğini gösterir. Bu kod, kapsayıcı olaylarındaki "Kapsayıcı sonlandırılıyor (platform tarafından başlatılan)" mesajlarına da karşılık gelir. |
Platform tarafından başlatılan sonlandırmalar (çıkış kodları 7147 ve 7148)
Çıkış kodları 7147 ve 7148, temel altyapıdan gelen platform çıkış kodlarıdır. Bu kodları her zaman doğrudan kapsayıcı ayrıntılarında göremeyebilirsiniz, ancak bunlar kapsayıcı olaylarında görüntülenen "Kapsayıcıyı öldürme (platform başlatıldı)" iletileriyle eşleşir. Platform tarafından başlatılan sonlandırmaların yaygın nedenleri şunlardır:
- Altyapı bakımı: Platform, kapsayıcınızı rutin bakım veya yük dengeleme kapsamında yeniden konumlandırdı.
- Kaynak kısıtlamaları: Altta yatan ana bilgisayarın kaynakları geri kazanması gerekiyordu.
- Platform güncellemeleri: Altyapı güncellendi ve kapsayıcıların yeniden başlatılmasını gerektirdi.
Bu sonlandırmalar bir bulut ortamında beklenir. Uygulamanızın kullanılabilirliğini artırmak için Application Gateway veya Traffic Manager gibi bir giriş bileşeninin arkasında birden çok kapsayıcı grubu çalıştırın.
Platform tarafından başlatılan sonlandırmalar hakkında daha fazla bilgi için bkz. Service Fabric kullanarak yaygın kod paketi hatalarını tanılama.
Sonraki Adımlar
Kapsayıcılarınızda hata ayıklamaya yardımcı olmak için kapsayıcı günlüklerini ve olaylarını almayı öğrenin.