Ausführen von Aufgaben in Containern mit Neustartrichtlinien

Da Container in Azure Container Instances sehr schnell und bequem bereitgestellt werden können, ist dies eine ideale Plattform zum Ausführen von einmaligen Aufgaben, wie Erstellen, Testen und Image-Rendering in einer Containerinstanz.

Mit einer konfigurierbaren Neustartrichtlinie können Sie angeben, dass Container nach dem Abschluss ihrer Prozesse beendet werden. Da Containerinstanzen nach Sekunden abgerechnet werden, fallen nur Gebühren für die Computeressourcen an, die beim Ausführen des Containers verwendet werden, der Ihre Aufgabe ausführt.

In den Beispielen in diesem Artikel wird die Azure-Befehlszeilenschnittstelle (Azure CLI) verwendet. Sie benötigen Azure CLI-Version 2.0.21 oder höher mit einer lokalen Installation, oder Sie verwenden die CLI in der Azure Cloud Shell.

Container-Neustartrichtlinie

Wenn Sie eine Containergruppe in Azure Container Instances erstellen, können Sie eine von drei Einstellungen für Neustartrichtlinien festlegen.

Neustartrichtlinie Beschreibung
Always Container in der Containergruppe werden immer neu gestartet. Dies ist die Standardeinstellung, wenn beim Erstellen des Containers keine Neustartrichtlinie angegeben wird.
Never Container in der Containergruppe werden nie neu gestartet. Die Container werden höchstens einmal ausgeführt.
OnFailure Container in der Containergruppe werden nur dann neu gestartet, wenn bei dem im Container ausgeführten Prozess ein Fehler auftritt (wenn er also mit einem Exitcode ungleich 0 beendet wird). Die Container werden mindestens einmal ausgeführt.

Hinweis

Wenn Ihre Containergruppe mit einer IP-Adresse konfiguriert ist, kann sich diese IP-Adresse bei einem Neustart der Containergruppe ändern.

Angeben einer Neustartrichtlinie

Wie Sie eine Richtlinie für den Neustart angeben, hängt davon ab, wie Sie die Containerinstanzen erstellen, z.B. mit der Azure CLI, Azure PowerShell-Cmdlets oder im Azure-Portal. Geben Sie in der Azure-Befehlszeilenschnittstelle den Parameter --restart-policy an, wenn Sie az container create aufrufen.

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

Beispiel für das Ausführen bis zum Abschluss

Erstellen Sie eine Containerinstanz auf der Grundlage des Microsoft-Images aci-wordcount, und geben Sie die Neustartrichtlinie OnFailure an, um die Neustartrichtlinie in Aktion zu sehen. Bei diesem Beispielcontainer wird ein Python-Skript ausgeführt, das standardmäßig den Text von Shakespeares Hamlet analysiert, die 10 häufigsten Wörter an STDOUT schreibt und dann beendet wird.

Führen Sie den Beispielcontainer mit dem folgenden az container create-Befehl aus:

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

Azure Container Instances startet den Container und beendet ihn dann, wenn die Anwendung (oder wie in diesem Fall das Skript) beendet wird. Wenn Azure Container Instances einen Container beendet, dessen Neustartrichtlinie Never oder OnFailure lautet, wird der Status des Containers auf Beendet festgelegt. Sie können den Status des Containers mit dem Befehl az container show überprüfen:

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

Beispielausgabe:

"Terminated"

Sobald der Status des Beispielcontainers Beendet lautet, können Sie die Taskausgabe in den Containerprotokollen anzeigen. Führen Sie den Befehl az container logs aus, um die Ausgabe des Skripts anzuzeigen:

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

Ausgabe:

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

Dieses Beispiel zeigt die Ausgabe, die das Skript an STDOUT gesendet hat. Die in Containern ausgeführten Aufgaben schreiben ihre Ausgabe allerdings möglicherweise in permanenten Speicher, um sie später abrufen zu können. Dies kann beispielsweise eine Azure-Dateifreigabe sein.

Nächste Schritte

Aufgabenbasierte Szenarien, z. B. Batchverarbeitung eines großen Datasets mit mehreren Containern, können von benutzerdefinierten Umgebungsvariablen oder Befehlszeilen zur Laufzeit profitieren.

Details zum dauerhaften Speichern der Ausgabe von Containern, die bis zum Abschluss ausgeführt werden, finden Sie unter Einbinden einer Azure-Dateifreigabe in Azure Container Instances.