再起動ポリシーによるコンテナー化タスクの実行Run containerized tasks with restart policies

Azure Container Instances ではコンテナー デプロイを簡単にすばやく行えるため、コンテナー インスタンスでのビルド、テスト、イメージ レンダリングなどの一度のみ実行されるタスクの実行に優れたプラットフォームを提供します。The ease and speed of deploying containers in Azure Container Instances provides a compelling platform for executing run-once tasks like build, test, and image rendering in a container instance.

構成可能な再起動ポリシーを使用して、プロセスが完了したらコンテナーが停止するように指定できます。With a configurable restart policy, you can specify that your containers are stopped when their processes have completed. コンテナーのインスタンスは秒単位で課金されるため、タスクを実行するコンテナーの実行中に使用されるコンピューティング リソースのみが課金されます。Because container instances are billed by the second, you're charged only for the compute resources used while the container executing your task is running.

この記事にある例では、Azure CLI を使用します。The examples presented in this article use the Azure CLI. Azure CLI バージョン 2.0.21 以上がローカルにインストールされているか、Azure Cloud Shell で CLI を使用する必要があります。You must have Azure CLI version 2.0.21 or greater installed locally, or use the CLI in the Azure Cloud Shell.

コンテナー再起動ポリシーContainer restart policy

Azure Container Instances でコンテナー グループを作成する場合、3 つの再起動ポリシー設定のいずれかを指定できます。When you create a container group in Azure Container Instances, you can specify one of three restart policy settings.

再起動ポリシーRestart policy 説明Description
Always コンテナー グループ内のコンテナーを常に再起動する。Containers in the container group are always restarted. これは既定の設定で、コンテナー作成時に再起動ポリシーが指定されていない場合に適用されます。This is the default setting applied when no restart policy is specified at container creation.
Never コンテナー グループ内のコンテナーを再起動しない。Containers in the container group are never restarted. コンテナーは最大で 1 回実行されます。The containers run at most once.
OnFailure コンテナーで実行されたプロセスが失敗 (0 以外の終了コードで終了) した場合にのみ、コンテナー グループ内のコンテナーを再起動する。Containers in the container group are restarted only when the process executed in the container fails (when it terminates with a nonzero exit code). コンテナーは少なくとも 1 回実行されます。The containers are run at least once.

再起動ポリシーの指定Specify a restart policy

再起動ポリシーを指定する方法は、Azure CLI や Azure PowerShell コマンドレット、または Azure Portal を使うなどのコンテナー インスタンスを作成する方法によって異なります。How you specify a restart policy depends on how you create your container instances, such as with the Azure CLI, Azure PowerShell cmdlets, or in the Azure portal. Azure CLI では、az container create を呼び出すときに、--restart-policy パラメーターを指定します。In the Azure CLI, specify the --restart-policy parameter when you call az container create.

az container create \
    --resource-group myResourceGroup \
    --name mycontainer \
    --image mycontainerimage \
    --restart-policy OnFailure

完了まで実行の例Run to completion example

再起動ポリシーが動作しているのを確認するには、Microsoft aci-wordcount イメージからコンテナー インスタンスを作成し、OnFailure 再起動ポリシーを指定します。To see the restart policy in action, create a container instance from the Microsoft aci-wordcount image, and specify the OnFailure restart policy. このコンテナー例では、既定でシェイクスピアのハムレットのテキストを解析し、最もよく使われる単語 10 個を STDOUT に書き込んで終了する Python スクリプトを実行します。This example container runs a Python script that, by default, analyzes the text of Shakespeare's Hamlet, writes the 10 most common words to STDOUT, and then exits.

このコンテナー例を次の az container create コマンドで実行します。Run the example container with the following az container create command:

az container create \
    --resource-group myResourceGroup \
    --name mycontainer \
    --image mcr.microsoft.com/azuredocs/aci-wordcount:latest \
    --restart-policy OnFailure

Azure Container Instances はコンテナーを開始し、そのアプリケーション (ここではスクリプト) が終了すると停止します。Azure Container Instances starts the container, and then stops it when its application (or script, in this case) exits. Azure Container Instances が再起動ポリシー Never または OnFailure のコンテナーを停止すると、そのコンテナーの状態は終了に設定されます。When Azure Container Instances stops a container whose restart policy is Never or OnFailure, the container's status is set to Terminated. az container show コマンドで、コンテナーの状態を確認できます。You can check a container's status with the az container show command:

az container show --resource-group myResourceGroup --name mycontainer --query containers[0].instanceView.currentState.state

出力例:Example output:

"Terminated"

コンテナー例の状態が終了と表示されたら、コンテナー ログを表示してタスクの出力を確認できます。Once the example container's status shows Terminated, you can see its task output by viewing the container logs. az container logs コマンドを実行して、スクリプトの出力を表示します。Run the az container logs command to view the script's output:

az container logs --resource-group myResourceGroup --name mycontainer

出力:Output:

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

この例は、スクリプトが STDOUT に送信した出力を示しています。This example shows the output that the script sent to STDOUT. ただし、コンテナー化されたタスクでは、後で取得できるように、その出力を永続的ストレージに書き込む場合があります。Your containerized tasks, however, might instead write their output to persistent storage for later retrieval. たとえば、Azure ファイル共有に書き込むなどです。For example, to an Azure file share.

次の手順Next steps

いくつかのコンテナーがある大きなデータセットのバッチ処理など、タスク ベースのシナリオでは、ランタイムではカスタムの環境変数またはコマンド ラインのメリットが得られます。Task-based scenarios, such as batch processing a large dataset with several containers, can take advantage of custom environment variables or command lines at runtime.

完了まで実行するコンテナーの出力を保存する方法の詳細については、「Azure Container Instances での Azure ファイル共有のマウント」をご覧ください。For details on how to persist the output of your containers that run to completion, see Mounting an Azure file share with Azure Container Instances.