Nastavení příkazového řádku v instanci kontejneru na přepsání výchozí operace příkazového řádku

Při vytváření instance kontejneru můžete volitelně zadat příkaz, který přepíše výchozí instrukce příkazového řádku vkládaná do image kontejneru. Toto chování se podobá argumentu příkazového --entrypoint řádku pro docker run.

Podobně jako nastavení proměnných prostředí pro instance kontejneru je zadání počátečního příkazového řádku užitečné pro dávkové úlohy, kde potřebujete každý kontejner dynamicky připravit s konfigurací pro konkrétní úlohu.

Pokyny pro příkazový řádek

  • Ve výchozím nastavení určuje příkazový řádek jeden proces, který se spustí bez prostředí v kontejneru. Příkazový řádek může například spustit skript Pythonu nebo spustitelný soubor. Proces může zadat další parametry nebo argumenty.

  • Pokud chcete spustit více příkazů, začněte příkazový řádek nastavením prostředí, které je podporováno v operačním systému kontejneru. Příklady:

    Operační systém Výchozí prostředí
    Ubuntu /bin/bash
    Alpine /bin/sh
    Windows cmd

    Postupujte podle konvencí prostředí a zkombinujte několik příkazů, které se budou spouštět po sobě.

  • V závislosti na konfiguraci kontejneru možná budete muset nastavit úplnou cestu ke spustitelnému souboru nebo argumentům příkazového řádku.

  • Nastavte pro instanci kontejneru odpovídající zásady restartování v závislosti na tom, jestli příkazový řádek určuje dlouho běžící úlohu nebo úlohu spouštěnou jednou. Pro úlohu spuštění se například doporučuje zásada Never restartování nebo OnFailure .

  • Pokud potřebujete informace o výchozím vstupním bodu nastaveném v imagi kontejneru, použijte příkaz docker image inspect .

Syntaxe příkazového řádku

Syntaxe příkazového řádku se liší v závislosti na rozhraní AZURE API nebo nástroji použitém k vytvoření instancí. Pokud zadáte prostředí, dodržujte také konvence syntaxe příkazů prostředí.

  • az container create command: Předejte řetězec s parametrem --command-line . Příklad: --command-line "python myscript.py arg1 arg2").

  • Rutina New-AzureRmContainerGroup Azure PowerShell: Předejte řetězec s parametrem -Command . Příklad: -Command "echo hello".

  • Azure Portal: Do vlastnosti Command override konfigurace kontejneru zadejte čárkami oddělený seznam řetězců bez uvozovek. Příklad: python, myscript.py, arg1, arg2).

  • Resource Manager šablony nebo souboru YAML nebo některé ze sad Azure SDK: Zadejte vlastnost příkazového řádku jako pole řetězců. Příklad: Pole ["python", "myscript.py", "arg1", "arg2"] JSON v šabloně Resource Manager.

    Pokud znáte syntaxi souboru Dockerfile , je tento formát podobný formě exec instrukce CMD.

Příklady

Azure CLI Portál Template (Šablona)
Jeden příkaz --command-line "python myscript.py arg1 arg2" Přepsání příkazu: python, myscript.py, arg1, arg2 "command": ["python", "myscript.py", "arg1", "arg2"]
Více příkazů --command-line "/bin/bash -c 'mkdir test; touch test/myfile; tail -f /dev/null'" Přepsání příkazu: /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"]

Příklad Azure CLI

Jako příklad můžete upravit chování obrázku kontejneru microsoft/aci-wordcount , který analyzuje text v Shakespearově Hamletovi a vyhledá nejčastěji se vyskytující slova. Místo analýzy Hamleta můžete nastavit příkazový řádek, který odkazuje na jiný zdroj textu.

Pokud chcete při analýze výchozího textu zobrazit výstup kontejneru microsoft/aci-wordcount , spusťte ho pomocí následujícího příkazu az container create . Není zadaný spouštěcí příkazový řádek, takže se spustí výchozí příkaz kontejneru. Pro ilustraci tento příklad nastaví proměnné prostředí tak, aby našly 3 hlavní slova, která mají délku aspoň pět písmen:

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

Jakmile se stav kontejneru zobrazí jako Terminated (ke kontrole stavu použijte příkaz az container show ), zobrazte protokol pomocí příkazu az container logs , abyste viděli výstup.

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

Teď nastavte druhý ukázkový kontejner pro analýzu jiného textu zadáním jiného příkazového řádku. Skript Pythonu spuštěný kontejnerem , wordcount.py, přijímá adresu URL jako argument a zpracovává obsah této stránky místo výchozího.

Pokud chcete například určit první 3 slova, která mají nejméně pět písmen v Romeovi a Julii:

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"

Po ukončení kontejneru znovu zobrazte výstup zobrazením protokolů kontejneru:

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

Další kroky

Scénáře založené na úlohách, jako je dávkové zpracování velké datové sady s několika kontejnery, můžou za běhu využívat vlastní příkazové řádky. Další informace o spouštění kontejnerů založených na úlohách najdete v tématu Spouštění kontejnerizovaných úloh se zásadami restartování.