演習 - 再起動の動作を制御する

完了

Azure Container Instances では、コンテナーのデプロイを簡単かつ迅速に行えるため、画像のレンダリングまたはアプリケーションのビルドやテストなど、一度のみ実行されるタスクの実行に最適です。

構成可能な再起動ポリシーを使用して、プロセスが完了したらコンテナーが停止するように指定できます。 コンテナーのインスタンスは秒単位で課金されるため、タスクを実行するコンテナーの実行中に使用されるコンピューティング リソースのみが課金されます。

コンテナー再起動ポリシーとは何ですか。

Azure Container Instances には、次の 3 つの再起動ポリシー オプションがあります。

再起動ポリシー 説明
Always (常に) コンテナー グループ内のコンテナーを常に再起動する。 このポリシーは、Web サーバーなどの実行時間の長いタスクに適しています。 この設定は、コンテナー作成時に再起動ポリシーが指定されていない場合に適用される既定値です。
Never (決してしない) コンテナー グループ内のコンテナーを再起動しない。 コンテナーは 1 回のみ実行されます。
OnFailure (失敗時) コンテナーで実行されたプロセスが失敗 (0 以外の終了コードで終了) した場合にのみ、コンテナー グループ内のコンテナーを再起動する。 コンテナーは少なくとも 1 回実行されます。 このポリシーは、存続期間の短いタスクを実行するコンテナーに適しています。

完了までコンテナーを実行する

再起動ポリシーが動作しているのを確認するには、azuredocs/aci-wordcount コンテナー イメージからコンテナー インスタンスを作成し、OnFailure 再起動ポリシーを指定します。 このコンテナーでは、シェイクスピアのハムレットのテキストを解析し、最もよく使われる 10 個の単語を標準出力に書き込んで終了する Python スクリプトを実行します。

  1. az container create コマンドを実行し、コンテナーを開始します。

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

    Azure Container Instances によってコンテナーが開始され、そのプロセス (ここではスクリプト) の終了時に停止されます。 Azure Container Instances によって、再起動ポリシーが Never または OnFailure のコンテナーが停止されると、そのコンテナーの状態は Terminated に設定されます。

  2. az container show を実行し、コンテナーの状態を確認します。

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

    [終了] 状態になるまでコマンドを繰り返します。

  3. az container logs を実行してコンテナーのログを表示し、出力を調べます。

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

    この出力が表示されます。

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