Краткое руководство. Развертывание экземпляра контейнера в Azure с помощью шаблона ARM

Служба "Экземпляры контейнеров Azure" позволяет легко и быстро запускать бессерверные контейнеры Docker в Azure. Развертывайте приложения в экземпляр контейнера по требованию, когда вам не нужна полная платформа оркестрации контейнера, такая как Служба Azure Kubernetes. В этом кратком руководстве показано, как развернуть изолированный контейнер Docker с помощью шаблона Azure Resource Manager (шаблона ARM) и сделать его веб-приложение доступным по общедоступному IP-адресу.

Шаблон Azure Resource Manager — это файл нотации объектов JavaScript (JSON), который определяет инфраструктуру и конфигурацию проекта. В шаблоне используется декларативный синтаксис. Вы описываете предполагаемое развертывание без написания последовательности команд программирования для создания развертывания.

Если среда соответствует предварительным требованиям и вы знакомы с использованием шаблонов ARM, нажмите кнопку Развертывание в Azure. На портале Azure откроется шаблон.

Кнопка для развертывания шаблона Resource Manager в Azure.

Необходимые компоненты

Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.

Изучение шаблона

Шаблон, используемый в этом кратком руководстве, взят из шаблонов быстрого запуска Azure.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.26.54.24096",
      "templateHash": "15999594271314721416"
    }
  },
  "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."
      }
    }
  },
  "resources": [
    {
      "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"
            }
          ]
        }
      }
    }
  ],
  "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(resourceId('Microsoft.ContainerInstance/containerGroups', parameters('name')), '2023-05-01').ipAddress.ip]"
    },
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    }
  }
}

В этом шаблоне определяется следующий ресурс.

  • Microsoft.ContainerInstance/containerGroups — создание группы контейнеров Azure. Этот шаблон определяет группу, состоящую из одного экземпляра контейнера.

Другие примеры шаблонов службы "Экземпляры контейнеров Azure" можно найти в коллекции шаблонов быстрого запуска.

Развертывание шаблона

  1. Выберите следующее изображение, чтобы войти на портал Azure и открыть шаблон. Шаблон создает реестр контейнеров и реплику в другом расположении.

    Кнопка для развертывания шаблона Resource Manager в Azure.

  2. Введите или выберите следующие значения.

    • Подписка. Выберите нужную подписку Azure.
    • Группа ресурсов. Щелкните Создать, введите уникальное имя новой группы ресурсов и щелкните ОК.
    • Расположение. Выберите расположение группы ресурсов. Пример: центральная часть США.
    • Имя. Используйте имя, созданное для экземпляра, или введите другое имя.
    • Образ. Используйте имя образа по умолчанию. Этот пример образа Linux содержит небольшое веб-приложение Node.js, которое обслуживает статические HTML-страницы.

    Примите значения по умолчанию для остальных свойств.

    Ознакомьтесь с условиями использования. Если вы согласны с ними, щелкните Я принимаю указанные выше условия.

    Свойства шаблона

  3. После успешного создания экземпляра вы получите уведомление:

    Уведомление на портале

Для развертывания шаблона используется портал Azure. Кроме портала Azure, вы можете использовать Azure PowerShell, Azure CLI и REST API. Дополнительные сведения о других методах развертывания см. в статье о развертывании с использованием шаблонов.

Просмотр развернутых ресурсов

Для просмотра свойств экземпляра контейнера используйте портал Azure или такое средство, как Azure CLI.

  1. На портале найдите службу "Экземпляры контейнеров" и выберите созданный экземпляр контейнера.

  2. На странице Обзор обратите внимание на состояние экземпляра и его IP-адрес.

    Страница обзора экземпляра

  3. Если параметр состояния имеет значение Выполняется, перейдите в браузере по IP-адресу.

    Приложение, развернутое с помощью службы

Просмотр журналов контейнеров

Просмотр журналов для экземпляра контейнера помогает устранять неполадки с этим контейнером или запущенными в нем приложениями.

Чтобы просмотреть журналы контейнера, в разделе Параметры щелкните Контейнеры>Журналы. Вы увидите запрос HTTP GET, созданный при просмотре приложения в браузере.

Журналы контейнера на портале Azure

Очистка ресурсов

Завершив работу с контейнером, на странице Обзор экземпляра контейнера щелкните Удалить. При появлении запроса подтвердите удаление.

Следующие шаги

В этом кратком руководстве вы создали экземпляр контейнера Azure из общедоступного образа Microsoft. Если вы хотите создать образ контейнера и развернуть его через частный реестр контейнеров Azure, перейдите к руководству по использованию службы "Экземпляры контейнеров Azure".

Пошаговые инструкции по созданию шаблона см. в следующей статье: