Dela via


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 stoppas när deras processer har slutförts. Eftersom Azure fakturerar containerinstanser per sekund debiteras du bara för de beräkningsresurser som används när containern som kör aktiviteten körs.

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 någon av tre principinställningar för omstart.

Omstartsprincip beskrivning
Always Containers i containergruppen startas alltid om. Den här principen är standardinställningen som tillämpas när ingen omstartsprincip anges när containern skapas.
Never Containers 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). Containers körs minst en gång.

Kommentar

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-portalen. 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-avbildningen OnFailure 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 avslutar.

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 statusen 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 utdata för skriptet:

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

Aktivitetsbaserade 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 bevarar utdata från dina containrar som körs till slutförande finns i Montera en Azure-filresurs med Azure Container Instances.