次の方法で共有


チュートリアル: Azure Container Instances にコンテナー アプリケーションをデプロイする

これは、3 部構成のシリーズの最後のチュートリアルです。 シリーズではこれまで、コンテナー イメージを作成して、Azure Container Registry にプッシュしました。 この記事で Azure Container Instances にコンテナーをデプロイして、このシリーズは完了です。

このチュートリアルでは、次の作業を行いました。

  • Azure Container Registry から Azure Container Instances へのコンテナーのデプロイ
  • ブラウザーでの実行中のアプリケーションの表示
  • コンテナーのログの表示

開始する前に

このチュートリアルを完了するには、次の要件を満たす必要があります。

Azure CLI:ローカル コンピューターに Azure CLI バージョン 2.0.29 以降がインストールされている必要があります。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードが必要な場合は、Azure CLI のインストールに関するページを参照してください。

Docker:このチュートリアルの前提として、コンテナー、コンテナー イメージ、基本 docker コマンドなど、Docker のコア概念を基本的に理解している必要があります。 Docker やコンテナーの基礎に関する入門情報については、「Docker overview」(Docker の概要) を参照してください。

Docker:このチュートリアルを完了するには、Docker がローカル環境にインストールされている必要があります。 Docker には、macOSWindowsLinux 上で Docker 環境の構成を行うパッケージが用意されています。

重要

Azure Cloud Shell には Docker デーモンが含まれていないため、このチュートリアルを完了するためには、Azure CLI と Docker エンジンの両方を自分でローカル コンピューターにインストールする必要があります。 このチュートリアルで Azure Cloud Shell を使用することはできません。

Azure CLI を使用して、コンテナーをデプロイする

このセクションでは、Azure CLI を使用してイメージをデプロイします。このイメージは、最初のチュートリアルで構築し、2 つ目のチュートリアルで Azure Container Registry にプッシュしたものです。 続行する前に、これらのチュートリアルを完了していることを確認してください。

レジストリ資格情報を取得する

2 つ目のチュートリアルで作成したようなプライベート Azure コンテナー レジストリでホストされるイメージをデプロイする場合は、レジストリにアクセスするための資格情報を指定する必要があります。

多くのシナリオのベスト プラクティスは、レジストリへのプルアクセス許可を Microsoft Entra サービス プリンシパルを作成して構成することです。 必要なアクセス許可を持つサービス プリンシパルを作成するためのサンプル スクリプトについては、「Azure Container Instances から Azure Container Registry の認証を受ける」を参照してください。 "サービス プリンシパル ID" と "サービス プリンシパル パスワード" を書き留めておいてください。 これらの資格情報は、コンテナーをデプロイするときにレジストリにアクセスするために使用します。

また、コンテナー レジストリ ログイン サーバーの完全な名前が必要となります (<acrName> は実際のレジストリ名に置き換えてください)。

az acr show --name <acrName> --query loginServer

コンテナーをデプロイする

次に、az container create コマンドを使用して、コンテナーをデプロイします。 <acrLoginServer> は、前のコマンドから取得した値に置き換えてください。 <service-principal-ID><service-principal-password> は、レジストリへのアクセス用に作成したサービス プリンシパルの ID とパスワードに置き換えます。 <aciDnsLabel> は、適切な DNS 名に置き換えてください。

az container create --resource-group myResourceGroup --name aci-tutorial-app --image <acrLoginServer>/aci-tutorial-app:v1 --cpu 1 --memory 1 --registry-login-server <acrLoginServer> --registry-username <service-principal-ID> --registry-password <service-principal-password> --ip-address Public --dns-name-label <aciDnsLabel> --ports 80

数秒以内に、Azure から最初の応答を受信します。 --dns-name-label の値は、コンテナー インスタンスを作成する Azure リージョン内で一意である必要があります。 コマンドを実行したときに DNS 名ラベルのエラー メッセージが表示された場合は、前述のコマンドの値を変更してください。

デプロイの進行状況を確認する

デプロイの状態を表示するには、az container show を使用します。

az container show --resource-group myResourceGroup --name aci-tutorial-app --query instanceView.state

状態が Pending から Running に変わるまで、az container show コマンドを繰り返します。これには 1 分もかかりません。 コンテナーが Running になったら、次の手順に進みます。

アプリケーションとコンテナー ログを表示する

デプロイが成功すると、az container show コマンドでコンテナーの完全修飾ドメイン名 (FQDN) が表示されます。

az container show --resource-group myResourceGroup --name aci-tutorial-app --query ipAddress.fqdn

次に例を示します。

"aci-demo.eastus.azurecontainer.io"

実行中のアプリケーションを表示するには、お使いのブラウザーで表示された DNS 名に移動します。

ブラウザーでの Hello World アプリ

コンテナーのログ出力を表示することもできます。

az container logs --resource-group myResourceGroup --name aci-tutorial-app

出力例:

listening on port 80
::ffff:10.240.0.4 - - [21/Jul/2017:06:00:02 +0000] "GET / HTTP/1.1" 200 1663 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"
::ffff:10.240.0.4 - - [21/Jul/2017:06:00:02 +0000] "GET /favicon.ico HTTP/1.1" 404 150 "http://aci-demo.eastus.azurecontainer.io/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"

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

このチュートリアル シリーズで作成したリソースのいずれかが不要になった場合は、az group delete コマンドを実行して、リソース グループとそこに含まれているすべてのリソースを削除できます。 このコマンドは、作成したコンテナー レジストリだけでなく、実行中のコンテナーと関連するすべてのリソースを削除します。

az group delete --name myResourceGroup

次のステップ

このチュートリアルでは、Azure Container Instances インスタンスにコンテナーをデプロイするプロセスを完了しました。 次の手順を完了しました。

  • Azure CLI を使用した Azure Container Registry からのコンテナーのデプロイ
  • ブラウザーでのアプリケーションの表示
  • コンテナー ログの表示

基本的な知識を習得した後は、コンテナー グループの仕組みなど、Azure Container Instances の詳細について学習してください。

Azure Container Instances のコンテナー グループ