مشاركة عبر


الحاويات في Azure Container Apps

تدير Azure Container Apps تفاصيل Kubernetes وتنسيق الحاوية نيابة عنك. يمكن للحاويات في Azure Container Apps استخدام أي وقت تشغيل أو لغة برمجة أو مكدس تطوير من اختيارك.

تطبيقات حاويات Azure: حاويات

تدعم Azure Container Apps:

  • أي صورة حاوية x86-64 (linux/amd64) مستندة إلى Linux
  • حاويات من أي سجل حاويات عام أو خاص
  • Optional sidecar and init containers

تتضمن الميزات أيضا:

  • تستخدم template التطبيقات قسم التكوين لتعريف صورة الحاوية والإعدادات الأخرى. تؤدي التغييرات في template قسم التكوين إلى مراجعة تطبيق حاوية جديدة.
  • إذا تعطل الحاوية، يتم إعادة تشغيلها تلقائياً.

تتضمن ميزات الوظائف ما يلي:

  • تستخدم template عمليات تنفيذ المهام قسم التكوين لتعريف صورة الحاوية والإعدادات الأخرى عند بدء كل تنفيذ.
  • إذا خرجت حاوية برمز خروج غير صفري، يتم وضع علامة على تنفيذ المهمة على أنه فاشل. يمكنك تكوين مهمة لإعادة محاولة عمليات التنفيذ الفاشلة.

Configuration

تحتوي معظم تطبيقات الحاويات على حاوية واحدة. في السيناريوهات المتقدمة، يمكن أن يحتوي التطبيق أيضا على حاويات sidecar و init. في تعريف تطبيق الحاوية، يتم سرد التطبيق الرئيسي وحاويات sidecar الخاصة به في containers الصفيف في properties.template القسم ، ويتم سرد حاويات init في initContainers الصفيف. يعرض المقتطف التالي خيارات التكوين المتوفرة عند إعداد حاويات التطبيق.

{
  "properties": {
    "template": {
      "containers": [
        {
          "name": "main",
          "image": "[parameters('container_image')]",
          "env": [
            {
              "name": "HTTP_PORT",
              "value": "80"
            },
            {
              "name": "SECRET_VAL",
              "secretRef": "mysecret"
            }
          ],
          "resources": {
            "cpu": 0.5,
            "memory": "1Gi"
          },
          "volumeMounts": [
            {
              "mountPath": "/appsettings",
              "volumeName": "appsettings-volume"
            }
          ],
          "probes": [
            {
              "type": "liveness",
              "httpGet": {
                "path": "/health",
                "port": 8080,
                "httpHeaders": [
                  {
                    "name": "Custom-Header",
                    "value": "liveness probe"
                  }
                ]
              },
              "initialDelaySeconds": 7,
              "periodSeconds": 3
            },
            {
              "type": "readiness",
              "tcpSocket": {
                "port": 8081
              },
              "initialDelaySeconds": 10,
              "periodSeconds": 3
            },
            {
              "type": "startup",
              "httpGet": {
                "path": "/startup",
                "port": 8080,
                "httpHeaders": [
                  {
                    "name": "Custom-Header",
                    "value": "startup probe"
                  }
                ]
              },
              "initialDelaySeconds": 3,
              "periodSeconds": 3
            }
          ]
        }
      ]
    },
    "initContainers": [
      {
        "name": "init",
        "image": "[parameters('init_container_image')]",
        "resources": {
          "cpu": 0.25,
          "memory": "0.5Gi"
        },
        "volumeMounts": [
          {
            "mountPath": "/appsettings",
            "volumeName": "appsettings-volume"
          }
        ]
      }
    ]
    ...
  }
  ...
}
Setting Description Remarks
image اسم صورة الحاوية لتطبيق الحاوية. تأخذ هذه القيمة شكل repository/<IMAGE_NAME>:<TAG>.

تجنب استخدام علامات ثابتة مثل latest لصور الحاوية. يمكن أن يؤدي استخدام العلامات الثابتة إلى مشاكل في التخزين المؤقت ويمكن أن يجعل من الصعب استكشاف أخطاء التطبيق وإصلاحها. بدلا من ذلك، استخدم علامات فريدة لكل عملية نشر، مثل تجزئة Git أو التاريخ والوقت لضمان تعقب التحديثات ونشرها بشكل صحيح.
name اسم مألوف للحاوية. يستخدم في إعداد التقارير وتحديد الهوية.
command أمر بدء تشغيل الحاوية. Equivalent to Docker's entrypoint field.
args بدء تشغيل وسيطات الأمر. يتم ربط الإدخالات في الصفيف معاً لإنشاء قائمة معلمات لتمريرها إلى أمر بدء التشغيل.
env صفيف من أزواج الاسم/القيمة التي تحدد متغيرات البيئة. استخدم secretRef بدلا من value الحقل عند الإشارة إلى سر.
resources.cpu عدد وحدات المعالجة المركزية المخصصة للحاوية. راجع متطلبات تخصيص وحدة المعالجة المركزية الظاهرية والذاكرة
resources.memory مقدار ذاكرة الوصول العشوائي المخصصة للحاوية. راجع متطلبات تخصيص وحدة المعالجة المركزية الظاهرية والذاكرة
volumeMounts صفيف من تعريفات تحميل وحدة التخزين. يمكنك تعريف وحدات تخزين مؤقتة أو دائمة للحاوية الخاصة بك. لمزيد من المعلومات حول وحدات التخزين، راجع استخدام عمليات تحميل التخزين في Azure Container Apps.
probes صفيف من تحقيقات السلامة الممكنة في الحاوية. لمزيد من المعلومات حول إعدادات المجسات، راجع تحقيقات الصحة في Azure Container Apps.

متطلبات تخصيص وحدة المعالجة المركزية الظاهرية والذاكرة

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

vCPUs (cores) Memory
0.25 0.5Gi
0.5 1.0Gi
0.75 1.5Gi
1.0 2.0Gi
1.25 2.5Gi
1.5 3.0Gi
1.75 3.5Gi
2.0 4.0Gi
2.25 4.5Gi
2.5 5.0Gi
2.75 5.5Gi
3.0 6.0Gi
3.25 6.5Gi
3.5 7.0Gi
3.75 7.5Gi
4.0 8.0Gi

Note

Apps using the Consumption plan in a Consumption only environment are limited to a maximum of 2 cores and 4Gi of memory.

Multiple containers

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

بالنسبة لمعظم سيناريوهات الخدمات المصغرة، فإن أفضل الممارسات هي نشر كل خدمة كتطبيق حاوية منفصل.

Multiple containers in the same container app share hard disk and network resources and experience the same application lifecycle.

There are two ways to run additional containers in a container app: sidecar containers and init containers.

Sidecar containers

You can define multiple containers in a single container app to implement the sidecar pattern.

تتضمن أمثلة حاويات sidecar ما يلي:

  • An agent that reads logs from the primary app container on a shared volume and forwards them to a logging service.

  • عملية خلفية تقوم بتحديث ذاكرة التخزين المؤقت المستخدمة بواسطة حاوية التطبيق الأساسية في وحدة تخزين مشتركة.

هذه السيناريوهات هي أمثلة، ولا تمثل الطرق الوحيدة التي يمكنك من خلالها تنفيذ sidecar.

لتشغيل حاويات متعددة في تطبيق حاوية، أضف أكثر من حاوية واحدة في containers صفيف قالب تطبيق الحاوية.

Init containers

You can define one or more init containers in a container app. يتم تشغيل حاويات Init قبل حاوية التطبيق الأساسية وتستخدم لتنفيذ مهام التهيئة مثل تنزيل البيانات أو إعداد البيئة.

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

Note

Init containers in apps using the Dedicated plan or running in a Consumption only environment can't access managed identity at run time.

Container registries

يمكنك نشر الصور المستضافة على السجلات الخاصة عن طريق توفير بيانات الاعتماد في تكوين Container Apps.

لاستخدام سجل حاوية، يمكنك تعريف السجل في registries الصفيف في properties.configuration قسم من قالب مورد تطبيق الحاوية. passwordSecretRef يعرف الحقل اسم السر في اسم الصفيفsecrets حيث قمت بتعريف كلمة المرور.

{
  ...
  "registries": [{
    "server": "docker.io",
    "username": "my-registry-user-name",
    "passwordSecretRef": "my-password-secret-name"
  }]
}

يتم استخدام بيانات الاعتماد المحفوظة لسحب صورة حاوية من السجل الخاص عند نشر تطبيقك.

يوضح المثال التالي كيفية تكوين بيانات اعتماد Azure Container Registry في تطبيق حاوية.

{
  ...
  "configuration": {
    "secrets": [
      {
        "name": "docker-hub-password",
        "value": "my-docker-hub-password"
      }
    ],
    ...
    "registries": [
      {
        "server": "docker.io",
        "username": "someuser",
        "passwordSecretRef": "docker-hub-password"
      }
    ]
  }
}

Note

Docker Hub limits the number of Docker image downloads. عند الوصول إلى الحد الأقصى، تفشل الحاويات في تطبيقك في البدء. استخدم سجلا بحدود كافية، مثل Azure Container Registry لتجنب هذه المشكلة.

الهوية المدارة باستخدام Azure Container Registry

يمكنك استخدام هوية مدارة من Azure للمصادقة باستخدام Azure Container Registry بدلا من استخدام اسم مستخدم وكلمة مرور. لمزيد من المعلومات، راجع الهويات المدارة في Azure Container Apps.

لاستخدام الهوية المدارة مع السجل، يجب تمكين الهوية في التطبيق ويجب تعيين acrPull دور لها في السجل. لتكوين السجل، استخدم معرف مورد الهوية المدارة لهوية معينة من قبل المستخدم، أو system للهوية المعينة من قبل النظام في identity خاصية السجل. لا تقم بتكوين اسم مستخدم وكلمة مرور عند استخدام الهوية المدارة.

{
    "identity": {
        "type": "SystemAssigned,UserAssigned",
        "userAssignedIdentities": {
            "<IDENTITY1_RESOURCE_ID>": {}
        }
    }
    "properties": {
        "configuration": {
            "registries": [
            {
                "server": "myacr1.azurecr.io",
                "identity": "<IDENTITY1_RESOURCE_ID>"
            },
            {
                "server": "myacr2.azurecr.io",
                "identity": "system"
            }]
        }
        ...
    }
}

لمزيد من المعلومات حول تكوين الهويات المعينة من قبل المستخدم، راجع إضافة هوية معينة من قبل المستخدم.

Limitations

Azure Container Apps لها القيود التالية:

  • Privileged containers: Azure Container Apps doesn't allow privileged containers mode with host-level access.

  • Operating system: Linux-based (linux/amd64) container images are required.

  • الحد الأقصى لحجم الصورة:

    • يدعم ملف تعريف حمل العمل الاستهلاك صور الحاوية التي يصل إجماليها إلى 8 غيغابايت لكل تطبيق أو نسخة متماثلة للوظيفة.
    • تدعم ملفات تعريف حمل العمل المخصصة صور حاوية أكبر. نظرا لأن ملف تعريف حمل العمل المخصص يمكنه تشغيل تطبيقات أو مهام متعددة، تشترك صور حاوية متعددة في مساحة القرص المتوفرة. يختلف حجم الصورة المدعومة الفعلي استنادا إلى الموارد التي تستهلكها التطبيقات والوظائف الأخرى.

Next steps