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 OnFailure
anges 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.