Köra uppgifter i containrar med principer för omstart

Eftersom det går snabbt att distribuera containrar i Azure Container Instances är det en bra plattform för att köra engångsuppgifter som att skapa, testa och återge avbildningar i en containerinstans.

Med en konfigurerbar omstartsprincip kan du ange att dina containrar ska stoppas när deras processer har slutförts. Eftersom du faktureras per sekund för containerinstanser debiteras du endast för de beräkningsresurser som används när containern kör dina uppgifter.

Exemplen som presenteras i den här artikeln använder Azure CLI. Du måste ha Azure CLI version 2.0.21 eller senare installerat lokalt eller använda CLI i Azure Cloud Shell.

Princip för omstart av container

När du skapar en containergrupp i Azure Container Instances kan du ange en av tre principinställningar för omstart.

Omstartsprincip Beskrivning
Always Containrar i containergruppen startas alltid om. Det här är standardvärdet som används om du inte anger någon omstartsprincip när du skapar containern.
Never Containrar i containergruppen startas aldrig om. Containers körs högst en gång.
OnFailure Containrar i containergruppen startas bara om när processen som körs i containern inte slutförs utan fel (när den avslutas med en annan slutkod än noll). Containrar körs minst en gång.

Anteckning

Om din containergrupp har konfigurerats med en IP-adress kan den IP-adressen ändras när containergruppen startas om.

Ange en omstartsprincip

Hur du anger en omstartsprincip beror på hur du skapar dina containerinstanser, till exempel med Azure CLI, Azure PowerShell cmdletar eller i Azure Portal. I Azure CLI anger du parametern --restart-policy när du anropar az container create.

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

Exempel på körning till slutförande

Om du vill se omstartsprincipen i praktiken skapar du en containerinstans från Microsoft aci-wordcount-avbildningenOnFailure och anger omstartsprincipen. Den här exempelcontainern kör ett Python-skript som som standard analyserar texten i Shakespeares Hamlet, skriver de 10 vanligaste orden till STDOUT och sedan avslutas.

Kör exempelcontainern med följande az container create-kommando :

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

Azure Container Instances startar containern och stoppar den när appen (eller skriptet i det här fallet) avslutas. När Azure Container Instances stoppar en container vars omstartsprincip är Never eller OnFailureanges containerns status till Avslutad. Du kan kontrollera status för en container med kommandot az container show :

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

Exempel på utdata:

"Terminated"

När exempelcontainerns status blir Avslutad kan du se utdata för uppgiften i containerloggarna. Kör kommandot az container logs för att visa skriptets utdata:

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

Utdata:

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

Det här exemplet visar de utdata som skriptet skickade till STDOUT. Dina containerbaserade uppgifter kan dock i stället skriva utdata till beständig lagring för senare hämtning. Till exempel till en Azure-filresurs.

Nästa steg

Uppgiftsbaserade scenarier, till exempel batchbearbetning av en stor datamängd med flera containrar, kan dra nytta av anpassade miljövariabler eller kommandorader vid körning.

Mer information om hur du sparar utdata för dina containrar som körs för slutförande finns i Montera en Azure-filresurs med Azure Container Instances.