Udostępnij za pośrednictwem


Ustaw wiersz polecenia w wystąpieniu kontenera, aby zastąpić domyślną operację wiersza polecenia

Podczas tworzenia wystąpienia kontenera opcjonalnie określ polecenie, aby zastąpić domyślną instrukcję wiersza polecenia wstawioną do obrazu kontenera. To zachowanie jest podobne do argumentu --entrypoint wiersza polecenia do docker run.

Podobnie jak ustawianie zmiennych środowiskowych dla wystąpień kontenera, określenie początkowego wiersza polecenia jest przydatne w przypadku zadań wsadowych, w których należy dynamicznie przygotować każdy kontener z konfiguracją specyficzną dla zadania.

Wskazówki dotyczące wiersza polecenia

  • Domyślnie wiersz polecenia określa pojedynczy proces uruchamiany bez powłoki w kontenerze. Na przykład wiersz polecenia może uruchamiać skrypt języka Python lub plik wykonywalny. Proces może określać dodatkowe parametry lub argumenty.

  • Aby wykonać wiele poleceń, rozpocznij wiersz polecenia, ustawiając środowisko powłoki obsługiwane w systemie operacyjnym kontenera. Przykłady:

    System operacyjny Domyślna powłoka
    Ubuntu /bin/bash
    Alpine /bin/sh
    Windows cmd

    Postępuj zgodnie z konwencjami powłoki, aby połączyć wiele poleceń do uruchomienia w sekwencji.

  • W zależności od konfiguracji kontenera może być konieczne ustawienie pełnej ścieżki do pliku wykonywalnego wiersza polecenia lub argumentów.

  • Ustaw odpowiednie zasady ponownego uruchamiania dla wystąpienia kontenera, w zależności od tego, czy wiersz polecenia określa długotrwałe zadanie, czy zadanie jednokrotne. Na przykład zasady ponownego uruchamiania Never lub OnFailure są zalecane dla zadania uruchamianego raz.

  • Jeśli potrzebujesz informacji o domyślnym punkcie wejścia ustawionym na obrazie kontenera, użyj polecenia docker image inspect .

Składnia wiersza polecenia

Składnia wiersza polecenia różni się w zależności od interfejsu API platformy Azure lub narzędzia używanego do tworzenia wystąpień. Jeśli określisz środowisko powłoki, należy również obserwować konwencje składni poleceń powłoki.

  • az container create command: Przekaż ciąg z parametrem --command-line . Przykład: --command-line "python myscript.py arg1 arg2").

  • Polecenie cmdlet programu Azure PowerShell New-AzureRmContainerGroup : przekaż ciąg z parametrem -Command . Przykład: -Command "echo hello".

  • Witryna Azure Portal: we właściwości Command override konfiguracji kontenera podaj rozdzielaną przecinkami listę ciągów bez cudzysłowów. Przykład: python, myscript.py, arg1, arg2).

  • Szablon usługi Resource Manager lub plik YAML albo jeden z zestawów SDK platformy Azure: określ właściwość wiersza polecenia jako tablicę ciągów. Przykład: tablica ["python", "myscript.py", "arg1", "arg2"] JSON w szablonie usługi Resource Manager.

    Jeśli znasz składnię pliku Dockerfile , ten format jest podobny do postaci exec instrukcji CMD.

Przykłady

Interfejs wiersza polecenia platformy Azure Portal Szablon
Jedno polecenie --command-line "python myscript.py arg1 arg2" Zastąpienie polecenia:python, myscript.py, arg1, arg2 "command": ["python", "myscript.py", "arg1", "arg2"]
Wiele poleceń --command-line "/bin/bash -c 'mkdir test; touch test/myfile; tail -f /dev/null'" Zastąpienie polecenia:/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"]

Przykład interfejsu wiersza polecenia platformy Azure

Na przykład zmodyfikuj zachowanie obrazu kontenera microsoft/aci-wordcount, który analizuje tekst w hamletie Szekspira, aby znaleźć najczęściej występujące wyrazy. Zamiast analizować hamlet, można ustawić wiersz polecenia wskazujący inne źródło tekstu.

Aby wyświetlić dane wyjściowe kontenera microsoft/aci-wordcount podczas analizowania domyślnego tekstu, uruchom go za pomocą następującego polecenia az container create . Nie określono wiersza polecenia uruchamiania, więc zostanie uruchomione domyślne polecenie kontenera. Na potrzeby ilustracji w tym przykładzie ustawia zmienne środowiskowe , aby znaleźć trzy pierwsze wyrazy, które mają co najmniej pięć liter:

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

Po wyświetleniu stanu kontenera jako Zakończone (użyj polecenia az container show, aby sprawdzić stan), wyświetl dziennik za pomocą polecenia az container logs, aby wyświetlić dane wyjściowe.

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

Teraz skonfiguruj drugi przykładowy kontener do analizowania innego tekstu, określając inny wiersz polecenia. Skrypt języka Python wykonywany przez kontener, wordcount.py, akceptuje adres URL jako argument i przetwarza zawartość tej strony zamiast domyślnej.

Aby na przykład określić trzy pierwsze wyrazy, które mają co najmniej pięć liter w Romeo i 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"

Ponownie po zakończeniu kontenera wyświetl dane wyjściowe, wyświetlając dzienniki kontenera:

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

Następne kroki

Scenariusze oparte na zadaniach, takie jak przetwarzanie wsadowe dużego zestawu danych z kilkoma kontenerami, mogą korzystać z niestandardowych wierszy poleceń w czasie wykonywania. Aby uzyskać więcej informacji na temat uruchamiania kontenerów opartych na zadaniach, zobacz Run containerized tasks with restart policies (Uruchamianie konteneryzowanych zadań przy użyciu zasad ponownego uruchamiania).