次の方法で共有


チュートリアル: Azure CLI を使用して Azure Container Instances でスポット コンテナーをデプロイする (プレビュー)

スポット コンテナーは、ACI のシンプルさとスポット VM の低コストを組み合わせるため、コンテナー化された割り込み可能なワークロードを大規模に簡単かつ手頃な価格で実行できます。 Azure Container Instances を使用してサーバーレス スポット コンテナーを実行します。 未使用の Azure 容量で割り込み可能でコンテナー化されたワークロードを低コストで実行し、Azure Kubernetes Service などの完全なコンテナー オーケストレーション プラットフォームは必要としない場合に、アプリケーションをオンデマンドでスポット コンテナーにデプロイします。

このクイックスタートでは、Azure CLI を使用して、スポット コンテナーを使用する helloworld コンテナーをデプロイします。 1 つのデプロイ コマンドを実行して数秒後に、コンテナー ログを見ると次のように表示されています。

  • このクイックスタートには、Azure CLI の 2xxx より後のバージョンが必要です。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。

リソース グループを作成する

Azure のコンテナー インスタンスは、すべての Azure リソースと同様に、リソース グループにデプロイする必要があります。 リソース グループを使用すると、関連する Azure リソースを整理して管理できます。

まず、次の az group create コマンドを使用して、"myResourceGroup" という名前のリソース グループを "eastus" ロケーションに作成します。

az group create --name myResourceGroup --location westus

コンテナーを作成する

リソース グループを作成したので、Azure でスポット コンテナーを実行できます。 Azure CLI を使用してスポット コンテナー グループを作成するには、リソース グループ名、コンテナー インスタンス名、コンテナー イメージ、そして 'Spot' という値を持つ 'priority' という名前の新しいプロパティを az container create コマンドに渡します。 このクイック スタートでは、パブリックの mcr.microsoft.com/azuredocs/aci-helloworld イメージを使用します。 このイメージには、静的な HTML ページを返す、Node.js で作成された小さな Web アプリがパッケージされています。

1 つまたは複数の開くポート、DNS 名ラベル、またはその両方を指定すると、スポット コンテナーをインターネットに公開することはできません。 このクイックスタートでは、DNS 名ラベルのない helloworld イメージを使用してコンテナーをデプロイします。 パブリックからは到達できません。 コンテナー ログに対してクエリを実行して、コンテナーが既定のポート 80 でリッスンしていることを確認できます。

次のようなコマンドを実行して、コンテナー インスタンスを開始します。

az container create --resource-group acispotdemo --name acispotclitest --image mcr.microsoft.com/azuredocs/aci-helloworld --priority spot

数秒以内に、デプロイが完了したことを示す応答が Azure CLI から得られます。 az container show コマンドを使用して、その状態を確認します。

az container show --resource-group acispotdemo --name acispotclitest --query "{ProvisioningState:provisioningState}" --out table

コマンドを実行すると、コンテナーの完全修飾ドメイン名 (FQDN) とそのプロビジョニング状態が表示されます。

ContainerGroupName                               ProvisioningState
---------------------------------  -------------------
acispotclitest                        Succeeded

コンテナーの ProvisioningState が "成功 (Succeeded)" の場合は、おめでとうございます。 Docker コンテナーで実行されているアプリケーションが Azure に正常にデプロイされました。

コンテナー ログを取り込む

コンテナーまたはコンテナーで実行されているアプリケーションのトラブルシューティングを行うことが必要になった場合 (またはその出力を確認するだけの場合) は、コンテナー インスタンスのログを表示することから始めます。

az container logs コマンドを使用して、コンテナー インスタンスのログをプルします。

az container logs --resource-group acispotdemo --name acispotclitest

出力にはコンテナーのログが表示され、以下のような出力が表示されます

listening on port 80

出力ストリームのアタッチ

ログを表示するだけでなく、ローカルの標準出力ストリームと標準エラー ストリームをコンテナーのストリームにアタッチすることができます。

最初に az container attach コマンドを実行して、ローカルのコンソールをコンテナーの出力ストリームにアタッチします。

az container attach --resource-group acispotdemo --name acispotclitest

アタッチしたら、ブラウザーを数回更新して、追加の出力を生成します。 完了したら、Control+C キーを押してコンソールをデタッチします。 次の例のような出力が表示されます。

Container 'acispotclitest' is in state 'Running'...
Start streaming logs:
listening on port 80

リソースをクリーンアップする

コンテナーを使い終えたら、az container delete コマンドを使用して、そのコンテナーを削除します。

az container delete --resource-group acispotdemo --name acispotclitest

コンテナーが削除されたことを確認するには、az container list コマンドを実行します。

az container list --resource-group acispotdemo --output table

acispotclitest コンテナーは、コマンドの出力に表示されないはずです。 リソース グループに別のコンテナーがない場合、出力は表示されません。

"acispotdemo" リソース グループとそこに含まれるすべてのリソースの処理が完了したら、次の az group delete コマンドを使用してそれを削除します。

az group delete --name acispotdemo

次の手順

このチュートリアルでは、Azure CLI を使用して、既定のクォータと削除ポリシーで、Azure Container Instances にスポット コンテナーを作成しました。