次の方法で共有


クイック スタート: ARM テンプレートを使用して Azure にコンテナー インスタンスをデプロイする

Azure Container Instances を使用して、シンプルかつ迅速に Azure でサーバーレス Docker コンテナーを実行します。 Azure Kubernetes Service などの完全なコンテナー オーケストレーション プラットフォームが不要な場合は、アプリケーションをコンテナー インスタンスにオンデマンドでデプロイします。 このクイック スタートでは、Azure Resource Manager テンプレート (ARM テンプレート) を使用して分離された Docker コンテナーをデプロイし、その Web アプリケーションをパブリック IP アドレスで使用できるようにします。

Azure Resource Manager テンプレートは JavaScript Object Notation (JSON) ファイルであり、プロジェクトのインフラストラクチャと構成が定義されています。 このテンプレートでは、宣言型の構文が使用されています。 デプロイを作成するための一連のプログラミング コマンドを記述しなくても、意図したデプロイを記述できます。

環境が前提条件を満たしていて、ARM テンプレートの使用に慣れている場合は、 [Azure へのデプロイ] ボタンを選択します。 テンプレートが Azure portal で開きます。

Resource Manager テンプレートを Azure に配置するボタン。

[前提条件]

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

テンプレートを確認する

このクイックスタートで使用されるテンプレートは Azure クイックスタート テンプレートからのものです。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "languageVersion": "2.0",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.37.4.10188",
      "templateHash": "7099805986652764357"
    }
  },
  "parameters": {
    "name": {
      "type": "string",
      "defaultValue": "acilinuxpublicipcontainergroup",
      "metadata": {
        "description": "Name for the container group"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    },
    "image": {
      "type": "string",
      "defaultValue": "mcr.microsoft.com/azuredocs/aci-helloworld",
      "metadata": {
        "description": "Container image to deploy. Should be of the form repoName/imagename:tag for images stored in public Docker Hub, or a fully qualified URI for other registries. Images from private registries require additional registry credentials."
      }
    },
    "port": {
      "type": "int",
      "defaultValue": 80,
      "metadata": {
        "description": "Port to open on the container and the public IP address."
      }
    },
    "cpuCores": {
      "type": "int",
      "defaultValue": 1,
      "metadata": {
        "description": "The number of CPU cores to allocate to the container."
      }
    },
    "memoryInGb": {
      "type": "int",
      "defaultValue": 2,
      "metadata": {
        "description": "The amount of memory to allocate to the container in gigabytes."
      }
    },
    "restartPolicy": {
      "type": "string",
      "defaultValue": "Always",
      "allowedValues": [
        "Always",
        "Never",
        "OnFailure"
      ],
      "metadata": {
        "description": "The behavior of Azure runtime if container has stopped."
      }
    },
    "zone": {
      "type": "string",
      "nullable": true,
      "metadata": {
        "description": "The availability zone to deploy the container group into. If not specified, the container group is nonzonal and might be deployed into any zone."
      }
    }
  },
  "resources": {
    "containerGroup": {
      "type": "Microsoft.ContainerInstance/containerGroups",
      "apiVersion": "2023-05-01",
      "name": "[parameters('name')]",
      "location": "[parameters('location')]",
      "properties": {
        "containers": [
          {
            "name": "[parameters('name')]",
            "properties": {
              "image": "[parameters('image')]",
              "ports": [
                {
                  "port": "[parameters('port')]",
                  "protocol": "TCP"
                }
              ],
              "resources": {
                "requests": {
                  "cpu": "[parameters('cpuCores')]",
                  "memoryInGB": "[parameters('memoryInGb')]"
                }
              }
            }
          }
        ],
        "osType": "Linux",
        "restartPolicy": "[parameters('restartPolicy')]",
        "ipAddress": {
          "type": "Public",
          "ports": [
            {
              "port": "[parameters('port')]",
              "protocol": "TCP"
            }
          ]
        }
      },
      "zones": "[if(not(equals(parameters('zone'), null())), createArray(parameters('zone')), null())]"
    }
  },
  "outputs": {
    "name": {
      "type": "string",
      "value": "[parameters('name')]"
    },
    "resourceGroupName": {
      "type": "string",
      "value": "[resourceGroup().name]"
    },
    "resourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.ContainerInstance/containerGroups', parameters('name'))]"
    },
    "containerIPv4Address": {
      "type": "string",
      "value": "[reference('containerGroup').ipAddress.ip]"
    },
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    }
  }
}

テンプレートでは、次のリソースが定義されています。

  • Microsoft.ContainerInstance/containerGroups: Azure コンテナー グループを作成します。 このテンプレートは、1 つのコンテナー インスタンスで構成されるグループを定義します。

その他の Azure Container Instances テンプレート サンプルについては、 クイック スタート テンプレート ギャラリーを参照してください。

コンテナー グループを特定の可用性ゾーンにデプロイするには、zone パラメーターの値をデプロイする論理可用性ゾーンに設定します。

Important

ゾーン展開は、可用性ゾーンをサポートするリージョンでのみ使用できます。 リージョンが可用性ゾーンをサポートしているかどうかを確認するには、「 Azure リージョンの一覧」を参照してください。

テンプレートをデプロイする

  1. Azure にサインインし、テンプレートを開くには次のイメージを選択します。 テンプレートは、別の場所にレジストリとレプリカを作成します。

    Resource Manager テンプレートを Azure に配置するボタン。

  2. 次の値を選択または入力します。

    • サブスクリプション: Azure サブスクリプションを選択します。
    • リソース グループ: [ 新規作成] を選択し、リソース グループの一意の名前を入力して、[ OK] を選択します
    • 場所: リソース グループの場所を選択します。 例: 米国中部
    • 名前: インスタンスの生成された名前を受け入れるか、名前を入力します。
    • イメージ: 既定のイメージ名をそのまま使用します。 このサンプル Linux イメージには、静的 HTML ページを提供する Node.js で記述された小さな Web アプリがパッケージされています。

    残りのプロパティの既定値をそのまま使用します。

    使用条件を確認します。 同意する場合は、 上記の使用条件に同意するを選択します。

    テンプレートのプロパティ

  3. インスタンスが正常に作成されると、通知が表示されます。

    ポータル通知

テンプレートをデプロイするには Azure portal を使用します。 Azure portal に加えて、Azure PowerShell、Azure CLI、REST API を使用できます。 他のデプロイ方法については、「テンプレートのデプロイ」を参照してください。

デプロイされているリソースを確認する

Azure portal または Azure CLI などのツールを使用して、コンテナー インスタンスのプロパティを確認します。

  1. ポータルでコンテナー インスタンスを検索し、作成したコンテナー インスタンスを選択します。

  2. [ 概要 ] ページで、インスタンスの 状態 とその IP アドレスをメモします。

    インスタンスの概要

  3. 状態が [実行中] になったら、ブラウザーで IP アドレスに移動します。

    ブラウザーで表示された Azure Container Instances を使用してデプロイされたアプリ

コンテナー ログの表示

コンテナー インスタンスのログの表示は、コンテナーまたは実行されているアプリケーションに関する問題のトラブルシューティングを行うときに役立ちます。

コンテナーのログを表示するには、[ 設定] で [ コンテナー>ログ] を選択します。 ブラウザーでアプリケーションを表示したときに生成された HTTP GET 要求が表示されます。

Azure ポータルのコンテナー ログ

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

コンテナーの操作が完了したら、コンテナー インスタンスの [概要 ] ページで [削除] を選択 します。 メッセージが表示されたら、削除を確定します。

次のステップ

このクイック スタートでは、パブリック Microsoft イメージから Azure コンテナー インスタンスを作成しました。 コンテナー イメージを構築し、プライベート Azure コンテナー レジストリからデプロイする場合は、Azure Container Instances のチュートリアルに進んでください。

テンプレートを作成するプロセスを説明する詳細なチュートリアルについては、次を参照してください。