Självstudie: Distribuera en grupp med flera containrar med en Resource Manager mall
Azure Container Instances stöd för distribution av flera containrar till en enda värd med hjälp av en containergrupp. En containergrupp är användbar när du skapar en programsidavagn för loggning, övervakning eller någon annan konfiguration där en tjänst behöver en andra kopplad process.
I den här självstudien följer du stegen för att köra en enkel sidovagnskonfiguration med två containrar genom att distribuera en Azure Resource Manager mall med hjälp av Azure CLI. Lär dig att:
- Konfigurera en gruppmall för flera containrar
- Distribuera containergruppen
- Visa loggarna för containrarna
En Resource Manager-mall kan enkelt anpassas för scenarier när du behöver distribuera ytterligare Azure-tjänstresurser (till exempel en Azure Files-resurs eller ett virtuellt nätverk) med containergruppen.
Anteckning
Grupper med flera containrar är för närvarande begränsade till Linux-containrar.
Om du inte har en Azure-prenumerationkan du skapa ett kostnads fritt konto innan du börjar.
Förutsättningar
Använd bash-miljön i Azure Cloud Shell.
Om du vill kan du i stället installera Azure CLI för att köra CLI-referenskommandon.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Fler inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas till det installerar du Azure CLI-tillägg vid första användning. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
Konfigurera en mall
Börja med att kopiera följande JSON till en ny fil med namnet azuredeploy.json . I Azure Cloud Shell kan du använda Visual Studio Code för att skapa filen i arbetskatalogen:
code azuredeploy.json
Den Resource Manager mallen definierar en containergrupp med två containrar, en offentlig IP-adress och två exponerade portar. Den första containern i gruppen kör ett Internetuppriktad webbprogram. Den andra containern, sidovagnen, gör en HTTP-begäran till huvudwebbappen via gruppens lokala nätverk.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"containerGroupName": {
"type": "string",
"defaultValue": "myContainerGroup",
"metadata": {
"description": "Container Group name."
}
}
},
"variables": {
"container1name": "aci-tutorial-app",
"container1image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest",
"container2name": "aci-tutorial-sidecar",
"container2image": "mcr.microsoft.com/azuredocs/aci-tutorial-sidecar"
},
"resources": [
{
"name": "[parameters('containerGroupName')]",
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2019-12-01",
"location": "[resourceGroup().location]",
"properties": {
"containers": [
{
"name": "[variables('container1name')]",
"properties": {
"image": "[variables('container1image')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 1.5
}
},
"ports": [
{
"port": 80
},
{
"port": 8080
}
]
}
},
{
"name": "[variables('container2name')]",
"properties": {
"image": "[variables('container2image')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 1.5
}
}
}
}
],
"osType": "Linux",
"ipAddress": {
"type": "Public",
"ports": [
{
"protocol": "tcp",
"port": 80
},
{
"protocol": "tcp",
"port": 8080
}
]
}
}
}
],
"outputs": {
"containerIPv4Address": {
"type": "string",
"value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups/', parameters('containerGroupName'))).ipAddress.ip]"
}
}
}
Om du vill använda ett privat containeravbildningsregister lägger du till ett -objekt i JSON-dokumentet med följande format. Ett exempel på implementering av den här konfigurationen finns i referensdokumentationen för ACI Resource Manager mallen.
"imageRegistryCredentials": [
{
"server": "[parameters('imageRegistryLoginServer')]",
"username": "[parameters('imageRegistryUsername')]",
"password": "[parameters('imageRegistryPassword')]"
}
]
Distribuera mallen
Skapa en resursgrupp med kommandot az group create.
az group create --name myResourceGroup --location eastus
Distribuera mallen med kommandot az deployment group create.
az deployment group create --resource-group myResourceGroup --template-file azuredeploy.json
Inom några sekunder bör du få ett första svar från Azure.
Visa distributionstillstånd
Om du vill visa status för distributionen använder du följande az container show-kommando:
az container show --resource-group myResourceGroup --name myContainerGroup --output table
Om du vill visa programmet som körs går du till dess IP-adress i webbläsaren. IP-adressen finns till exempel i 52.168.26.124 följande exempelutdata:
Name ResourceGroup Status Image IP:ports Network CPU/Memory OsType Location
---------------- --------------- -------- -------------------------------------------------------------------------------------------------- -------------------- --------- --------------- -------- ----------
myContainerGroup danlep0318r Running mcr.microsoft.com/azuredocs/aci-tutorial-sidecar,mcr.microsoft.com/azuredocs/aci-helloworld:latest 20.42.26.114:80,8080 Public 1.0 core/1.5 gb Linux eastus
Visa containerloggar
Visa loggutdata för en container med kommandot az container logs. Argumentet --container-name anger den container som loggarna ska hämtas från. I det här exemplet aci-tutorial-app anges containern.
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-app
Utdata:
listening on port 80
::1 - - [02/Jul/2020:23:17:48 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
::1 - - [02/Jul/2020:23:17:51 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
::1 - - [02/Jul/2020:23:17:54 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
Om du vill se loggarna för sidovagnscontainern kör du ett liknande kommando som anger aci-tutorial-sidecar containern.
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-sidecar
Utdata:
Every 3s: curl -I http://localhost 2020-07-02 20:36:41
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 1663 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
HTTP/1.1 200 OK
X-Powered-By: Express
Accept-Ranges: bytes
Cache-Control: public, max-age=0
Last-Modified: Wed, 29 Nov 2017 06:40:40 GMT
ETag: W/"67f-16006818640"
Content-Type: text/html; charset=UTF-8
Content-Length: 1663
Date: Thu, 02 Jul 2020 20:36:41 GMT
Connection: keep-alive
Som du ser gör sidovagnen regelbundet en HTTP-begäran till huvudwebbappen via gruppens lokala nätverk för att säkerställa att den körs. Det här sidovagnsexempel kan utökas för att utlösa en avisering om den tog emot en annan HTTP-svarskod än 200 OK .
Nästa steg
I den här självstudien har du Azure Resource Manager en mall för att distribuera en grupp med flera containrar i Azure Container Instances. Du har lärt dig att:
- Konfigurera en gruppmall för flera containrar
- Distribuera containergruppen
- Visa loggarna för containrarna
Ytterligare mallexempel finns i Azure Resource Manager för Azure Container Instances.
Du kan också ange en grupp med flera containrar med hjälp av en YAML-fil. På grund av YAML-formatets mer koncisa natur är distribution med en YAML-fil ett bra val när distributionen endast innehåller containerinstanser.
