Dela via


Snabbstart: Distribuera en containerinstans i Azure med hjälp av en ARM-mall

Använd Azure Container Instances för att köra serverlösa Docker-containrar i Azure med enkelhet och hastighet. Distribuera ett program till en containerinstans på begäran när du inte behöver en fullständig plattform för containerorkestrering som Azure Kubernetes Service. I den här snabbstarten använder du en Azure Resource Manager-mall (ARM-mall) för att distribuera en isolerad Docker-container och göra dess webbprogram tillgängligt med en offentlig IP-adress.

En Azure Resource Manager-mall är en JSON-fil (JavaScript Object Notation) som definierar infrastrukturen och konfigurationen för projektet. Mallen använder deklarativ syntax. Du beskriver den avsedda distributionen utan att skriva sekvensen med programmeringskommandon för att skapa distributionen.

Om din miljö uppfyller förhandskraven och du är van att använda ARM-mallar väljer du knappen Distribuera till Azure. Mallen öppnas i Azure Portal.

Knapp för att distribuera Resource Manager-mallen till Azure.

Förutsättningar

Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.

Granska mallen

Mallen som används i den här snabbstarten kommer från Azure-snabbstartsmallar.

{
  "$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')]"
    }
  }
}

Följande resurs definieras i mallen:

Fler mallexempel för Azure Container Instances finns i snabbstartsmallgalleriet.

Om du vill distribuera containergruppen till en specifik tillgänglighetszon anger du värdet för parametern zone till den logiska tillgänglighetszon som du vill distribuera till.

Viktigt!

Zonplaceringar är endast tillgängliga i regioner som stöder tillgänglighetszoner. Om du vill se om din region har stöd för tillgänglighetszoner kan du läsa Listan över Azure-regioner.

Använd mallen

  1. Välj följande bild för att logga in på Azure och öppna en mall. Mallen skapar ett register och en replik på en annan plats.

    Knapp för att distribuera Resource Manager-mallen till Azure.

  2. Välj eller ange följande värden.

    • Prenumeration: välj en Azure-prenumeration.
    • Resursgrupp: välj Skapa ny, ange ett unikt namn för resursgruppen och välj sedan OK.
    • Plats: välj en plats för resursgruppen. Exempel: Centrala USA.
    • Namn: acceptera det genererade namnet för instansen eller ange ett namn.
    • Bild: acceptera standardbildens namn. Den här Linux-exempelbilden paketar en liten webbapp skriven i Node.js som hanterar en statisk HTML-sida.

    Acceptera standardvärden för de återstående egenskaperna.

    Granska villkoren. Om du samtycker väljer du Jag godkänner de villkor som anges ovan.

    Mallegenskaper

  3. När instansen har skapats får du ett meddelande:

    Portalavisering

Azure-portalen används för att distribuera mallen. Förutom Azure-portalen kan du använda Azure PowerShell, Azure CLI och REST API. Mer information om andra distributionsmetoder finns i Distribuera mallar.

Granska distribuerade resurser

Använd Azure-portalen eller ett verktyg som Azure CLI för att granska egenskaperna för containerinstansen.

  1. I portalen söker du efter Container Instances och väljer den containerinstans som du skapade.

  2. På sidan Översikt noterar du status för instansen och dess IP-adress.

    Instansöversikt

  3. När statusen är Körs, öppnar du IP-adressen i din webbläsare.

    App distribuerad med hjälp av Azure Container Instances visad i webbläsaren

Visa containerloggar

Det är användbart att visa loggarna för en containerinstans när du felsöker problem med din container eller det program som körs.

Om du vill visa containerns loggar går du till Inställningar och väljerContainerloggar>. Du bör se HTTP GET-begäran som genererades när du visade programmet i webbläsaren.

Containerloggar i Azure-portalen

Rensa resurser

När du är klar med containern går du till sidan Översikt för containerinstansen och väljer Ta bort. Bekräfta borttagningen när du uppmanas att göra det.

Nästa steg

I den här snabbstarten skapade du en Azure-containerinstans från en offentlig Microsoft-avbildning. Om du vill skapa en containeravbildning och distribuera den från ett privat Azure-containerregister fortsätter du till självstudien Azure Container Instances.

En stegvis självstudiekurs som vägleder dig genom processen att skapa en mall finns i: