Yeniden başlatma ilkeleriyle kapsayıcılı görevleri çalıştırma

Azure Container Instances’da hızla ve kolayca kapsayıcı dağıtma olanağı, bir kapsayıcı örneğinde derleme, test ve görüntü işleme gibi tek kez çalıştırılan görevlerin yürütülmesi için cazip bir platform sağlar.

Yapılandırılabilen bir yeniden başlatma ilkesiyle kapsayıcıların işlemleri tamamlandıktan sonra durdurulmasını belirtebilirsiniz. Kapsayıcı örnekleri saniyelik olarak faturalandığından, yalnızca görevinizi çalıştıran kapsayıcının çalıştığı süre boyunca kullanılan işlem kaynakları için ücret ödersiniz.

Bu makalede sunulan örneklerde Azure CLI kullanılır. Yerel olarak Azure CLI 2.0.21 veya üzeri bir sürümünün yüklü olması veya Azure Cloud Shell CLI'yi kullanmanız gerekir.

Kapsayıcı yeniden başlatma ilkesi

Azure Container Instances'de bir kapsayıcı grubu oluşturduğunuzda, üç yeniden başlatma ilkesi ayarından birini belirtebilirsiniz.

Yeniden başlatma ilkesi Açıklama
Always Kapsayıcı grubundaki kapsayıcılar her zaman yeniden başlatılır. Bu, kapsayıcı oluşturulurken yeniden başlatma ilkesi belirtilmezse uygulanan varsayılan ayardır.
Never Kapsayıcı grubundaki kapsayıcılar hiçbir zaman yeniden başlatılmaz. Kapsayıcılar en fazla bir kez çalışır.
OnFailure Kapsayıcı grubundaki kapsayıcılar yalnızca kapsayıcıda yürütülen işlem başarısız olduğunda (sıfır olmayan çıkış kodu ile sonlandırıldığında) yeniden başlatılır. Kapsayıcılar en az bir kez çalıştırılır.

Not

Kapsayıcı grubunuz bir IP adresiyle yapılandırılmışsa, kapsayıcı grubu yeniden başlatıldığında bu IP adresi değişebilir.

Yeniden başlatma ilkesi belirtme

Yeniden başlatma ilkesini nasıl belirleyeceğiniz, Azure CLI, Azure PowerShell cmdlet'leri veya Azure portal gibi kapsayıcı örneklerinizi nasıl oluşturduğunuza bağlıdır. Azure CLI'de az container create çağrısı yaptığınızda parametresini belirtin--restart-policy.

az container create \
    --resource-group myResourceGroup \
    --name mycontainer \
    --image mycontainerimage \
    --restart-policy OnFailure

Tamamlamaya kadar çalıştır örneği

Yeniden başlatma ilkesinin nasıl çalıştığını görmek için Microsoft aci-wordcount görüntüsünden bir kapsayıcı örneği oluşturun ve yeniden başlatma ilkesini belirtin OnFailure . Bu örnek kapsayıcı, varsayılan olarak Shakespeare'in Hamlet metnini analiz eden, STDOUT'a en yaygın 10 sözcüğü yazan ve sonra çıkan bir Python betiği çalıştırır.

Aşağıdaki az container create komutuyla örnek kapsayıcıyı çalıştırın:

az container create \
    --resource-group myResourceGroup \
    --name mycontainer \
    --image mcr.microsoft.com/azuredocs/aci-wordcount:latest \
    --restart-policy OnFailure

Azure Container Instances kapsayıcıyı başlatır ve kapsayıcıdaki uygulama (veya bu durumda betik) çıkış yaptığında durdurur. Azure Container Instances yeniden başlatma ilkesi Never veya OnFailureolan bir kapsayıcıyı durdurduğunda kapsayıcının durumu Sonlandırıldı olarak ayarlanır. az container show komutuyla kapsayıcının durumunu de kontrol edebilirsiniz:

az container show \
    --resource-group myResourceGroup \
    --name mycontainer \
    --query containers[0].instanceView.currentState.state

Örnek çıktı:

"Terminated"

Örnek kapsayıcının durumunda Sonlandırıldı ifadesi göründüğünde kapsayıcı günlüklerini görüntüleyerek görev çıktısını görebilirsiniz. Betiğin çıkışını görüntülemek için az container logs komutunu çalıştırın:

az container logs --resource-group myResourceGroup --name mycontainer

Çıkış:

[('the', 990),
 ('and', 702),
 ('of', 628),
 ('to', 610),
 ('I', 544),
 ('you', 495),
 ('a', 453),
 ('my', 441),
 ('in', 399),
 ('HAMLET', 386)]

Bu örnekte betiğin STDOUT'a gönderdiği çıkış gösterilmektedir. Ancak kapsayıcılı görevleriniz, daha sonra almak üzere çıktılarını kalıcı depolama alanına yazabilir. Örneğin, bir Azure dosya paylaşımına.

Sonraki adımlar

Çeşitli kapsayıcılara sahip büyük bir veri kümesini toplu olarak işleme gibi görev tabanlı senaryolar, çalışma zamanında özel ortam değişkenlerinden veya komut satırlarından yararlanabilir.

Tamamlanmak üzere çalıştırılacak kapsayıcılarınızın çıkışını kalıcı hale getirmek için bkz. azure dosya paylaşımını Azure Container Instances bağlama.