チュートリアル: 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 にスポット コンテナーを作成しました。