Sdílet prostřednictvím


Nastavení příkazového řádku v instanci kontejneru pro 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 upečené do image kontejneru. Toto chování je podobné argumentu příkazového --entrypoint řádku jako docker run.

Stejně 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í specifickou pro ú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. Například příkazový řádek může 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 mají spouštět v sekvenci.

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

  • Nastavte odpovídající zásady restartování pro instanci kontejneru v závislosti na tom, jestli příkazový řádek určuje dlouhotrvající úlohu nebo úlohu typu run-once. Například zásady Never restartování nebo OnFailure se doporučuje pro úlohu spouštěnou jednou.

  • 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í prostředí, sledujte také konvence syntaxe příkazů prostředí.

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

  • Rutina Azure PowerShellu New-AzContainerGroup: Předání řetězce s parametrem -Command Příklad: -Command "echo hello".

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

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

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

Příklady

Azure CLI Portál Š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

Například upravte chování image kontejneru microsoft/aci-wordcount, která analyzuje text v Hamletu Shakespeare a vyhledá nejčastěji se vyskytující slova. Místo analýzy Hamletu byste mohli nastavit příkazový řádek, který odkazuje na jiný zdroj textu.

Pokud chcete zobrazit výstup kontejneru microsoft/aci-wordcount při analýze výchozího textu, spusťte ho pomocí následujícího příkazu az container create . Není zadán žádný 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šel první tři slova, která mají 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 Ukončeno (pomocí příkazu az container show ke kontrole stavu), zobrazte protokol pomocí příkazu az container logs a zobrazte 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á jako argument adresu URL a zpracovává obsah této stránky místo výchozího nastavení.

Chcete-li například určit první tři slova, která jsou aspoň pět písmen dlouhá v Romeu 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"

Jakmile je kontejner ukončen, 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 využívat vlastní příkazové řádky za běhu. Další informace o spouštění kontejnerů založených na úlohách najdete v tématu Spouštění kontejnerizovaných úloh pomocí zásad restartování.