Guia de início rápido: implantar uma instância de contêiner no Azure usando um modelo ARM

Utilize o Azure Container Instances para executar contentores de Docker sem servidor no Azure com simplicidade e celeridade. Implemente uma aplicação numa instância de contentor a pedido quando não precisar de uma plataforma completa de orquestração de contentores, como o Azure Kubernetes Service. Neste início rápido, você usa um modelo do Azure Resource Manager (modelo ARM) para implantar um contêiner isolado do Docker e disponibilizar seu aplicativo Web com um endereço IP público.

Um modelo do Azure Resource Manager é um arquivo JSON (JavaScript Object Notation) que define a infraestrutura e a configuração do seu projeto. O modelo utiliza sintaxe declarativa. Você descreve a implantação pretendida sem escrever a sequência de comandos de programação para criar a implantação.

Se o seu ambiente cumpre os pré-requisitos e se está familiarizado com a utilização de modelos ARM, selecione o botão Implementar no Azure. O modelo será aberto no portal do Azure.

Button to deploy the Resource Manager template to Azure.

Pré-requisitos

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Rever o modelo

O modelo utilizado neste início rápido pertence aos Modelos de Início Rápido do 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')]"
    }
  }
}

O seguinte recurso é definido no modelo:

Mais exemplos de modelo de Instâncias de Contêiner do Azure podem ser encontrados na galeria de modelos de início rápido.

Implementar o modelo

  1. Selecione a imagem seguinte para iniciar sessão no Azure e abrir um modelo. O modelo cria um registro e uma réplica em outro local.

    Button to deploy the Resource Manager template to Azure.

  2. Selecione ou introduza os seguintes valores.

    • Subscrição: selecione uma subscrição do Azure.
    • Grupo de recursos: selecione Criar novo, insira um nome exclusivo para o grupo de recursos e selecione OK.
    • Localização: selecione uma localização para o grupo de recursos. Exemplo: Central dos EUA.
    • Nome: aceite o nome gerado para a instância ou insira um nome.
    • Imagem: aceite o nome da imagem padrão. Esta imagem Linux de exemplo empacota um pequeno aplicativo Web escrito em Node.js que serve uma página HTML estática.

    Aceite os valores padrão para as propriedades restantes.

    Reveja os termos e condições. Se concordar, selecione Concordo com os termos e condições descritos acima.

    Template properties

  3. Depois que a instância for criada com êxito, você receberá uma notificação:

    Portal notification

O portal do Azure é utilizado para implementar o modelo. Além do portal do Azure, você pode usar o Azure PowerShell, a CLI do Azure e a API REST. Para aprender outros métodos de implantação, consulte Implantar modelos.

Rever os recursos implementados

Use o portal do Azure ou uma ferramenta como a CLI do Azure para revisar as propriedades da instância do contêiner.

  1. No portal, procure por Instâncias de contêiner e selecione a instância de contêiner que você criou.

  2. Na página Visão geral, observe o status da instância e seu endereço IP.

    Instance overview

  3. Quando o seu estado estiver em execução, navegue até ao endereço IP no seu navegador.

    App deployed using Azure Container Instances viewed in browser

Ver registos de contentor

Ver os registos de uma instância de contentor é útil quando estiver a resolver problemas no contentor ou na aplicação nele executada.

Para exibir os logs do contêiner, em Configurações, selecione Logs de contêineres>. Deverá ver o pedido HTTP GET gerado quando visualizou a aplicação no seu browser.

Container logs in the Azure portal

Clean up resources (Limpar recursos)

Quando terminar de usar o contêiner, na página Visão geral da instância do contêiner, selecione Excluir. Quando lhe for perguntado, confirme a eliminação.

Próximos passos

Neste início rápido, você criou uma instância de contêiner do Azure a partir de uma imagem pública da Microsoft. Se quiser criar uma imagem de contentor e implementá-la partir de um registo de contentor privado do Azure, prossiga para o tutorial do Azure Container Instances.

Para obter um tutorial passo a passo que o orienta pelo processo de criação de um modelo, consulte: