Taken in containers uitvoeren met beleid voor opnieuw opstarten

Het gemak en de snelheid waarmee containers in Azure Container Instances worden geïmplementeerd, zorgt voor een aantrekkelijk platform voor het uitvoeren van eenmalige taken zoals bouwen, testen en rendering van afbeeldingen in een containerinstantie.

Met een configureerbaar beleid voor opnieuw starten kunt u opgeven dat uw containers worden gestopt wanneer hun processen zijn voltooid. Omdat containerinstanties per seconde worden gefactureerd, betaalt u alleen voor de rekenresources die worden gebruikt terwijl de container waar uw taak wordt uitgevoerd actief is.

In de voorbeelden in dit artikel wordt gebruikgemaakt van de Azure CLI. Azure CLI versie 2.0.21 of hoger moet lokaal zijn geïnstalleerd of de CLI gebruiken in de Azure Cloud Shell.

Beleid voor het opnieuw opstarten van containers

Wanneer u een containergroep maakt in Azure Container Instances, kunt u een van drie beleidsinstellingen voor opnieuw opstarten opgeven.

Beleid voor opnieuw starten Beschrijving
Always Containers in de containergroep worden altijd opnieuw gestart. Dit is de standaardinstelling die wordt toegepast wanneer er geen beleid voor opnieuw starten wordt opgegeven bij het maken van een container.
Never Containers in de containergroep worden nooit opnieuw gestart. De containers worden maximaal één keer uitgevoerd.
OnFailure Containers in de containergroep worden alleen opnieuw gestart als het proces in de container mislukt (wanneer deze wordt afgesloten met een andere afsluitcode dan nul). De containers worden ten minste één keer uitgevoerd.

Notitie

Als uw containergroep is geconfigureerd met een IP-adres, kan dat IP-adres worden gewijzigd wanneer de containergroep opnieuw wordt gestart.

Een beleid voor opnieuw opstarten opgeven

Hoe u beleid voor opnieuw opstarten opgeeft, is afhankelijk van hoe u uw containerinstanties maakt, zoals met de Azure CLI, Azure PowerShell cmdlets of in de Azure Portal. Geef in de Azure CLI de --restart-policy parameter op wanneer u az container create aanroept.

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

Voorbeeld uitvoeren tot voltooiing

Als u het beleid voor opnieuw opstarten in actie wilt zien, maakt u een containerinstantie op basis van de installatiekopieën van Microsoft aci-wordcount en geeft u het OnFailure beleid voor opnieuw opstarten op. In deze voorbeeldcontainer wordt een Python-script uitgevoerd dat standaard de tekst van Shakespeare's Hamlet analyseert, de tien meest voorkomende woorden naar STDOUT schrijft en vervolgens wordt afgesloten.

Voer de voorbeeldcontainer uit met de volgende opdracht az container create :

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

Azure Container Instances start de container en stopt deze wanneer de toepassing (of het script in dit geval) wordt afgesloten. Wanneer Azure Container Instances een container stopt waarvan het beleid voor opnieuw opstarten of OnFailureisNever, wordt de status van de container ingesteld op Beëindigd. U kunt de status van een container controleren met de opdracht az container show :

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

Voorbeelduitvoer:

"Terminated"

Wanneer de status van de voorbeeldcontainer Beëindigd is, kunt u de taakuitvoer zien door de containerlogboeken te bekijken. Voer de opdracht az container logs uit om de uitvoer van het script te bekijken:

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

Uitvoer:

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

In dit voorbeeld ziet u de uitvoer die het script naar STDOUT heeft verzonden. Uw containertaken kunnen echter in plaats daarvan hun uitvoer naar de permanente opslag schrijven voor later ophalen. Bijvoorbeeld naar een Azure-bestandsshare.

Volgende stappen

Op taken gebaseerde scenario's, zoals batchverwerking van een grote gegevensset met meerdere containers, kunnen profiteren van aangepaste omgevingsvariabelen of opdrachtregels tijdens runtime.

Zie Een Azure-bestandsshare koppelen met Azure Container Instances voor meer informatie over het behouden van de uitvoer van uw containers die tot voltooiing worden uitgevoerd.