التشغيل السريع: نشر مثيل حاوية في "Azure" باستخدام قالب "ARM"

استخدام Azure Container Instances لتشغيل حاويات Docker بدون خادم في Azure ببساطة وبسرعة. انشر تطبيقاً على مثيل حاوية عند الطلب عندما لا تحتاج إلى نظام أساسي لتنظيم حاوية كاملة، مثل Azure Kubernetes Service. خلال هذا التشغيل السريع، يمكنك استخدام قالب "Azure Resource Manager" (قالب ARM) لنشر حاوية "Docker" معزولة وجعل تطبيق الويب الخاص به متوفراً بعنوان IP عام.

قالب Azure Resource Manager هو ملف JavaScript Object Notation (JSON) الذي يحدد البنية الأساسية والتكوين لمشروعك. يستخدم القالب عبارات توضيحية. يمكنك وصف النشر المقصود دون كتابة تسلسل أوامر البرمجة لإنشاء النشر.

إذا كانت بيئتك تلبي المتطلبات الأساسية وكنت معتاداً على استخدام قوالب "ARM"، فحدد زر "Deploy to Azure". سيتم فتح القالب في مدخل Azure.

Button to deploy the Resource Manager template to 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')]"
    }
  }
}

تم تعريف مورد Azure واحد في القالب:

يمكن العثور على المزيد من نماذج قالب مثيل حاويات "Azure" في معرض قالب التشغيل السريع.

نشر القالب

  1. حدد الصورة التالية لتسجيل الدخول إلى Azure وفتح قالب. يقوم القالب بإنشاء سجل ونسخة متماثلة في موقع آخر.

    Button to deploy the Resource Manager template to Azure.

  2. حدد القيم التالية أو أدخلها.

    • الاشتراك: «select an Azure subscription».
    • لمجموعة الموارد: حدد "Create new"، وأدخل اسماً فريداً لمجموعة الموارد، ثم حدّد "OK".
    • المنطقة: حدد موقعاً لمجموعة الموارد. على سبيل المثال: وسط الولايات المتحدة.
    • الاسم: قبول الاسم الذي تم إنشاؤه للمثيل، أو إدخال اسم.
    • الصورة: قبول اسم الصورة الافتراضي. حزم صورة Linux هذه نموذج لتطبيق ويب صغير مكتوب بلغة Node.js يقدم صفحة HTML ثابتة.

    اقبل القيم الافتراضية للإعدادات المتبقية.

    راجع الشروط والأحكام. إذا وافقت، حدد "I agree to the terms and conditions stated above".

    Template properties

  3. بعد إنشاء المثيل بنجاح، ستحصل على إشعار:

    Portal notification

يُستخدم مدخل Microsoft Azure لنشر القالب. بالإضافة إلى "Azure portal"، يمكنك استخدام "Azure PowerShell"، و" Azure CLI" و"واجهة برمجة تطبيقات REST". لمعرفة طرق النشر الأخرى، راجع نشر القوالب.

مراجعة الموارد الموزعة

استخدم "Azure portal" أو أداة مثل "Azure CLI" لمراجعة خصائص مثيل الحاوية.

  1. في البوابة، ابحث عن سجلات الحاويات، وحدد مثيل الحاوية الذي أنشأته.

  2. في صفحة "Overview"، لاحظ حالة المثيل وعنوان IP الخاص به.

    Instance overview

  3. بمجرد أن تكون حالته قيد التشغيل، انتقل إلى عنوان IP في المتصفح الخاص بك.

    App deployed using Azure Container Instances viewed in browser

عرض سجلات الحاوية

عرض السجلات لمثيل حاوية مفيد عند استكشاف الأخطاء وإصلاحها مشاكل مع الحاوية أو التطبيق الذي يعمل.

لعرض سجلات الحاوية، ضمن قائمة "Settings"، حدد "Containers">"Logs". يجب أن تشاهد طلب HTTP GET الذي تم إنشاؤه عند عرض التطبيق في المتصفح الخاص بك.

Container logs in the Azure portal

تنظيف الموارد

عند الانتهاء من الحاوية، في صفحة "Overview" لمثيل الحاوية، ثم حدد "Delete". عند المطالبة، قم بتأكيد الحذف.

الخطوات التالية

في هذه البداية السريعة، قمت بإنشاء مثيل حاوية Azure من صورة Microsoft عامة. إذا كنت ترغب في إنشاء صورة حاوية ونشرها من سجل حاويات Azure خاص، تابع البرنامج التعليمي لمثيلات حاويات Azure.

للحصول على برنامج تعليمي خطوة بخطوة يرشدك خلال عملية إنشاء قالب، راجع: