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 beendet werden, wenn ihre Prozesse abgeschlossen sind. Da Azure Containerinstanzen nach Sekunden abrechnet, fallen nur Gebühren für die Computeressourcen an, die beim Ausführen des Containers, der Ihre Aufgabe ausführt, genutzt werden.
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. Diese Richtlinie 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.