Ćwiczenie — kontrolowanie zachowania ponownego uruchamiania

Łatwość i szybkość wdrażania kontenerów w usłudze Azure Container Instances sprawia, że platforma doskonale nadaje się do wykonywania jednorazowych zadań, takich jak renderowanie obrazów lub kompilowanie i testowanie aplikacji.

Dzięki możliwym do skonfigurowania zasadom ponownego uruchamiania możesz określić, aby Twoje kontenery zatrzymały się po zakończeniu wykonywania procesów. Ponieważ opłaty za wystąpienia kontenerów są naliczane za sekundę, rozliczeniu podlegają tylko zasoby obliczeniowe używane wtedy, kiedy działa kontener wykonujący zadanie.

Jakie są zasady ponownego uruchamiania kontenerów?

Usługa Azure Container Instances oferuje trzy opcje zasad ponownego uruchamiania:

Zasady ponownego uruchamiania Opis
Always (Zawsze) Kontenery w grupie kontenerów są zawsze uruchamiane ponownie. Te zasady mają sens w przypadku długotrwałych zadań, takich jak serwer sieci Web. Jest to domyślne ustawienie stosowane, gdy podczas tworzenia kontenera nie zostanie określona żadna zasada ponownego uruchamiania.
Never (Nigdy) Kontenery w grupie kontenerów nie są nigdy uruchamiane ponownie. Kontenery są uruchamiane tylko jeden raz.
OnFailure (W razie niepowodzenia) Kontenery w grupie kontenerów są uruchamiane ponownie tylko wtedy, gdy proces wykonywany w kontenerze zakończy się niepowodzeniem (zostanie przerwany z kodem zakończenia różnym od zera). Kontenery są uruchamiane co najmniej raz. Te zasady są odpowiednie dla kontenerów, w których są uruchamiane krótkoterminowe zadania.

Uruchamianie kontenera do ukończenia

Aby zobaczyć, jak działają zasady ponownego uruchamiania, utwórz wystąpienie kontenera na podstawie obrazu microsoft/aci-wordcount platformy Docker i ustaw zasady ponownego uruchamiania OnFailure (W razie niepowodzenia). W tym kontenerze jest uruchamiany skrypt w języku Python, który analizuje tekst Hamleta Szekspira, zapisuje 10 najczęściej występujących słów do standardowego strumienia wyjściowego, a następnie kończy działanie.

  1. Uruchom to polecenie az container create, aby uruchomić kontener.

    az container create \
      --resource-group learn-deploy-aci-rg \
      --name mycontainer-restart-demo \
      --image microsoft/aci-wordcount:latest \
      --restart-policy OnFailure \
      --location eastus
    

    Usługa Azure Container Instances uruchamia kontener, a następnie zatrzymuje go, gdy jego proces (lub, jak w tym przypadku, skrypt) kończy działanie. Gdy usługa Azure Container Instances zatrzymuje kontener, którego zasady ponownego uruchamiania są ustawione na wartość Never (Nigdy) lub OnFailure (W razie niepowodzenia), stan kontenera jest ustawiany na Terminated (Zakończony).

  2. Uruchom polecenie az container show, aby sprawdzić stan kontenera.

    az container show \
      --resource-group learn-deploy-aci-rg \
      --name mycontainer-restart-demo \
      --query containers[0].instanceView.currentState.state
    

    Powtarzaj polecenie, aż do osiągnięcia stanu Terminated (Zakończony).

  3. Wyświetl dzienniki kontenera, aby sprawdzić dane wyjściowe. W tym celu uruchom polecenie az container logs w poniższy sposób.

    az container logs \
      --resource-group learn-deploy-aci-rg \
      --name mycontainer-restart-demo
    

    Wynik jest następujący.

    [('the', 990),
     ('and', 702),
     ('of', 628),
     ('to', 610),
     ('I', 544),
     ('you', 495),
     ('a', 453),
     ('my', 441),
     ('in', 399),
     ('HAMLET', 386)]