Freigeben über


Legen Sie die Befehlszeile in einer Containerinstanz so fest, dass sie die standardmäßige Befehlszeilenoperation außer Kraft setzt.

Wenn Sie eine Containerinstanz erstellen, geben Sie optional einen Befehl an, um die standardmäßige Befehlszeilenanweisung im Containerimage außer Kraft zu setzen. Dieses Verhalten ist vergleichbar mit dem Befehlszeilenargument --entrypoint für docker run.

Wie das Festlegen von Umgebungsvariablen für Containerinstanzen ist die Angabe einer Startbefehlszeile nützlich für Batchaufträge, bei denen Sie jeden Container dynamisch mit einer aufgabenspezifischen Konfiguration vorbereiten müssen.

Befehlszeilenrichtlinien

  • Standardmäßig gibt die Befehlszeile einen einzelnen Prozess an, der ohne Shell im Container startet. Über die Befehlszeile kann z. B. ein Python-Skript oder eine ausführbare Datei ausgeführt werden. Der Prozess kann zusätzliche Parameter oder Argumente angeben.

  • Um mehrere Befehle auszuführen, beginnen Sie Ihre Befehlszeile mit dem Einrichten einer Shellumgebung, die im Containerbetriebssystem unterstützt wird. Beispiele:

    Betriebssystem Standardshell
    Ubuntu /bin/bash
    Alpine /bin/sh
    Windows cmd

    Folgen Sie den Konventionen der Shell, um mehrere Befehle zu kombinieren und in Folge auszuführen.

  • Abhängig von der Containerkonfiguration müssen Sie möglicherweise einen vollständigen Pfad zur ausführbaren Befehlszeilendatei oder zu Argumenten festlegen.

  • Legen Sie eine geeignete Neustartrichtlinie für die Containerinstanz fest, je nachdem, ob die Befehlszeile eine zeitintensive Aufgabe oder eine einmal ausgeführte Aufgabe angibt. Für eine einmal ausgeführte Aufgabe wird z. B. eine Neustartrichtlinie von Never oder OnFailure empfohlen.

  • Wenn Sie Informationen zum standardmäßig in einem Containerimage festgelegten Einstiegspunkt benötigen, verwenden Sie den Befehl docker image inspect.

Befehlszeilensyntax

Die Befehlszeilensyntax variiert je nach Azure-API oder dem Tool, die bzw. das zum Erstellen der Instanzen verwendet wird. Wenn Sie eine Shellumgebung angeben, beachten Sie auch die Befehlssyntaxkonventionen der Shell.

  • Befehl az container create: Übergeben Sie eine Zeichenfolge mit dem Parameter --command-line. Beispiel: --command-line "python myscript.py arg1 arg2").

  • Azure PowerShell-Cmdlet New-AzureRmContainerGroup: Übergeben Sie eine Zeichenfolge mit dem Parameter -Command. Beispiel: -Command "echo hello".

  • Azure-Portal: Geben Sie in der Eigenschaft Command override der Containerkonfiguration eine kommagetrennte Liste von Zeichenfolgen ohne Anführungszeichen an. Beispiel: python, myscript.py, arg1, arg2).

  • Resource Manager-Vorlage oder YAML-Datei oder eines der Azure-SDKs: Geben Sie die Befehlszeileneigenschaft als Array von Zeichenfolgen an. Beispiel: Das JSON-Array ["python", "myscript.py", "arg1", "arg2"] in einer Resource Manager-Vorlage.

    Wenn Sie mit der Dockerfile-Syntax vertraut sind, ist dieses Format ähnlich der exec-Form der CMD-Anweisung.

Beispiele

Azure CLI Portal Vorlage
Einzelner Befehl --command-line "python myscript.py arg1 arg2" Außerkraftsetzung von Befehl: python, myscript.py, arg1, arg2 "command": ["python", "myscript.py", "arg1", "arg2"]
Mehrere Befehle --command-line "/bin/bash -c 'mkdir test; touch test/myfile; tail -f /dev/null'" Außerkraftsetzung von Befehl: /bin/bash, -c, mkdir test; touch test/myfile; tail -f /dev/null "command": ["/bin/bash", "-c", "mkdir test; touch test/myfile; tail -f /dev/null"]

Azure CLI-Beispiel

Ändern Sie z.B. das Verhalten des Containerimages microsoft/aci-wordcount, das Text in Shakespeares Hamlet analysiert, um die am häufigsten vorkommenden Wörter zu finden. Anstatt Hamlet zu analysieren, können Sie eine Befehlszeile festlegen, die auf eine andere Textquelle verweist.

Um die Ausgabe des Containers microsoft/aci-wordcount anzuzeigen, wenn er den Standardtext analysiert, führen Sie ihn mit dem folgenden Befehl az container create aus. Es wird keine Startbefehlszeile angegeben, sodass der Standardcontainerbefehl ausgeführt wird. Zur Veranschaulichung legt dieses Beispiel Umgebungsvariablen fest, um die drei wichtigsten Wörter zu finden, die mindestens fünf Buchstaben lang sind:

az container create \
    --resource-group myResourceGroup \
    --name mycontainer1 \
    --image mcr.microsoft.com/azuredocs/aci-wordcount:latest \
    --environment-variables NumWords=3 MinLength=5 \
    --restart-policy OnFailure

Sobald für den Container der Status Beendet angezeigt wird, (verwenden Sie az container show zum Überprüfen des Status), zeigen Sie dessen Protokolle mit az container logs an, um die Ausgabe zu sehen.

az container logs --resource-group myResourceGroup --name mycontainer1
[('HAMLET', 386), ('HORATIO', 127), ('CLAUDIUS', 120)]

Richten Sie jetzt einen zweiten Beispielcontainer ein, um einen anderen Text zu analysieren, indem Sie eine andere Befehlszeile angeben. Das vom Container ausgeführte Python-Skript (wordcount.py) akzeptiert eine URL als Argument und verarbeitet den Inhalt dieser Seite anstelle des Standardwerts.

Wenn Sie z. B. die häufigsten drei Wörter in Romeo und Julia ermitteln möchten, die mindestens fünf Zeichen lang sind:

az container create \
    --resource-group myResourceGroup \
    --name mycontainer2 \
    --image mcr.microsoft.com/azuredocs/aci-wordcount:latest \
    --restart-policy OnFailure \
    --environment-variables NumWords=3 MinLength=5 \
    --command-line "python wordcount.py http://shakespeare.mit.edu/romeo_juliet/full.html"

Zeigen Sie auch hier, wenn der Container den Status Beendet aufweist, die Ausgabe durch Aufrufen der Containerprotokolle an:

az container logs --resource-group myResourceGroup --name mycontainer2
[('ROMEO', 177), ('JULIET', 134), ('CAPULET', 119)]

Nächste Schritte

Aufgabenbasierte Szenarien, z. B. Stapelverarbeitung eines großen Datasets mit mehreren Containern, können von benutzerdefinierten Befehlszeilen zur Laufzeit profitieren. Weitere Informationen zum Ausführen aufgabenbasierter Container finden Sie unter Ausführen von Aufgaben in Containern mit Neustartrichtlinien.