0Pricing
Cloud & IT Cert Prep · درس

Azure Container Instances

شغّل تطبيقًا في حاوية خلال ثوانٍ باستخدام ACI من دون إدارة الخوادم، وهيّئ متغيرات البيئة وعمليات تركيب وحدات التخزين، وتعرّف على فوترة ACI.

Azure Container Instances درس مجاني في Cloud & IT Cert Prep على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cloud & IT Cert Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.

ما هي Azure Container Instances؟

إن Azure Container Instances (ACI) هي أسرع طريقة لتشغيل حمل عمل قائم على الحاويات في Azure من دون إدارة أي خوادم أو orchestrators. ما عليك سوى توفير صورة حاوية، وستشغّلها Azure خلال ثوانٍ على بنية أساسية مشتركة ومتعددة المستأجرين. وتُعد ACI مناسبة للمهام قصيرة الأجل، والمهام الدفعية، ووكلاء الإنشاء، وأحمال العمل المعتمدة على الأحداث، التي يكون فيها تشغيل مجموعة Kubernetes كاملة عبئًا زائدًا غير ضروري.

إنشاء Container Instance

شغّل حاوية ACI باستخدام أمر az container create واحد. حدّد الصورة ومجموعة الموارد ووحدة المعالجة المركزية والذاكرة. تعمل ACI على سحب الصورة وتخصيص الموارد وبدء تشغيل الحاوية — عادةً خلال 5 إلى 10 ثوانٍ. تحصل كل حاوية على fully qualified domain name (FQDN) فريد إذا عيّنت تسمية لاسم DNS، ما يجعلها متاحة فورًا من الإنترنت.

# Run an Nginx container accessible from the internet
az container create \
  --name my-nginx \
  --resource-group MyRG \
  --image nginx:latest \
  --cpu 1 \
  --memory 1 \
  --dns-name-label my-nginx-demo \
  --ports 80

# Access at: http://my-nginx-demo.<region>.azurecontainer.io

متغيرات البيئة والقيم الآمنة

مرّر الإعدادات إلى حاويات ACI باستخدام متغيرات البيئة المحددة وقت الإنشاء. بالنسبة إلى القيم الحساسة مثل مفاتيح API أو كلمات المرور، استخدم متغيرات البيئة الآمنة — إذ لا تظهر هذه القيم في مدخل Azure أو في مخرجات CLI بعد النشر، مما يمنع كشفها عن طريق الخطأ في السجلات أو مسارات التدقيق. ومع ذلك، تظل القيم الآمنة متاحة داخل الحاوية وقت التشغيل كمتغيرات بيئة عادية.

# Pass regular and secure environment variables
az container create \
  --name my-app \
  --resource-group MyRG \
  --image mycontainerregistry.azurecr.io/myapp:v1.0 \
  --environment-variables APP_ENV=production \
  --secure-environment-variables \
    DATABASE_PASSWORD='super-secret-password' \
    API_KEY='my-api-key'

# View logs from the running container
az container logs --name my-app --resource-group MyRG

الفوترة وتخصيص الموارد في ACI

تُحتسب فاتورة ACI بالثانية بناءً على أنوية وحدة المعالجة المركزية وغيغابايت الذاكرة التي تخصصها، من دون حد أدنى لفترة الفوترة. ولا تدفع إلا أثناء تشغيل الحاوية — فعند توقفها تتوقف الفوترة فورًا. يجعل ذلك ACI فعّالة جدًا من حيث التكلفة لأحمال العمل قصيرة الأجل. يمكنك تخصيص ما بين 0.1 و4 أنوية لوحدة المعالجة المركزية، وما بين 0.1 و16 غيغابايت من الذاكرة لكل مجموعة حاويات، وفق التركيبات المدعومة.

# Small: 0.5 CPU, 0.5 GB memory
az container create --name small-task --resource-group MyRG \
  --image my-batch-image:latest --cpu 0.5 --memory 0.5 \
  --restart-policy Never  # Don't restart after completion

# Large: 4 CPU, 16 GB memory for intensive tasks
az container create --name ml-inference --resource-group MyRG \
  --image ml-model:latest --cpu 4 --memory 16

سياسات إعادة التشغيل

تدعم ACI ثلاث سياسات لإعادة التشغيل تتحكم في سلوك الحاوية بعد خروجها. تعيد Always (الإعداد الافتراضي) تشغيل الحاوية كلما خرجت — وهي مناسبة للخدمات طويلة التشغيل. تشغّل Never الحاوية مرة واحدة وتتركها في حالة متوقفة — وهي مثالية للمهام الدفعية. أما OnFailure فتعيد التشغيل فقط عندما تخرج الحاوية برمز خروج غير صفري — وهو أمر مفيد لأنماط إعادة المحاولة عند حدوث خطأ.

# Batch job: run once, never restart
az container create \
  --name data-processor \
  --resource-group MyRG \
  --image my-batch-image:latest \
  --restart-policy Never \
  --environment-variables BATCH_DATE=2025-01-01

# Check the container's final state
az container show \
  --name data-processor \
  --resource-group MyRG \
  --query '{state:instanceView.state, exitCode:instanceView.currentState.exitCode}'

مجموعات الحاويات: عمليات النشر متعددة الحاويات

مجموعة الحاويات هي مجموعة من الحاويات التي تشترك في دورة الحياة والشبكة والتخزين — على نحو مشابه لـ Kubernetes pod. تشترك الحاويات الموجودة في المجموعة نفسها في عنوان IP محلي ومساحة أسماء المنافذ، مما يتيح لها التواصل عبر localhost. ومن الأنماط الشائعة وجود حاوية تطبيق رئيسية وحاوية sidecar (مثل وكيل تسجيل أو proxy) في المجموعة نفسها، مع تعريفهما باستخدام قالب YAML أو ARM.

# multi-container.yaml
apiVersion: '2021-09-01'
location: eastus
name: my-container-group
properties:
  containers:
  - name: app
    properties:
      image: myapp:v1.0
      ports: [{port: 80}]
      resources: {requests: {cpu: 1, memoryInGb: 1}}
  - name: log-forwarder
    properties:
      image: fluent-bit:latest
      resources: {requests: {cpu: 0.5, memoryInGb: 0.5}}
  osType: Linux
  restartPolicy: Always
type: Microsoft.ContainerInstance/containerGroups

# Deploy from YAML
# az container create --resource-group MyRG --file multi-container.yaml

تحميل وحدات التخزين: التكامل مع Azure Files

تكون حاويات ACI عديمة الحالة افتراضيًا — إذ تُفقد البيانات المكتوبة في نظام ملفات الحاوية عند إعادة تشغيلها. حمّل مشاركة Azure Files كوحدة تخزين للحفاظ على البيانات عبر عمليات إعادة تشغيل الحاوية أو لمشاركة البيانات بين الحاويات في المجموعة نفسها. حدّد اسم حساب التخزين والمفتاح واسم مشاركة الملفات عند إنشاء مثيل الحاوية.

# Mount an Azure Files share for persistent storage
az container create \
  --name stateful-app \
  --resource-group MyRG \
  --image myapp:v1.0 \
  --azure-file-volume-account-name mystorageaccount \
  --azure-file-volume-account-key '<storage-account-key>' \
  --azure-file-volume-share-name myfileshare \
  --azure-file-volume-mount-path /data

# Data written to /data persists in the Azure Files share

مثيلات الحاويات باستخدام GPU

تدعم ACI مثيلات الحاويات باستخدام GPU (K80 وV100) لأحمال عمل استدلال ML ومعالجة الفيديو والحوسبة العلمية. تتوفر مثيلات GPU في مناطق محددة وتتطلب حاويات Linux. وتُحتسب تكلفتها لكل GPU/ثانية، مما يجعلها اقتصادية لسيناريوهات الاستدلال المتقطع التي تشغّل فيها حاوية GPU، وتنفّذ النموذج، ثم توقفها فورًا — وهي أرخص بكثير من تشغيل جهاز GPU افتراضي مخصص على مدار الساعة.

# Create a GPU-enabled container instance
az container create \
  --name gpu-inference \
  --resource-group MyRG \
  --image my-ml-model:latest \
  --gpu-count 1 \
  --gpu-sku V100 \
  --cpu 4 \
  --memory 16 \
  --os-type Linux

ACI مع Virtual Network

انشر مجموعات حاويات ACI في شبكة فرعية مخصصة ضمن VNet لمنحها عناوين IP خاصة والسماح لها بالوصول إلى الموارد الأخرى المتصلة بـ VNet (قواعد البيانات والأجهزة الافتراضية) من دون تعريضها للإنترنت. يتطلب ACI المتكامل مع VNet شبكة فرعية مخصصة ومفوّضة (مفوّضة إلى Microsoft.ContainerInstance/containerGroups) ولا يدعم تعيين عنوان IP عام.

# Create an ACI container in a VNet
az container create \
  --name private-task \
  --resource-group MyRG \
  --image myapp:v1.0 \
  --vnet MyVNet \
  --subnet ContainerSubnet \
  --restart-policy Never

# The container gets a private IP from the subnet CIDR
# It can reach VNet resources (SQL, Redis, VMs) on private IPs

ACI كعقدة Virtual Kubelet

تتكامل ACI مع AKS كـ عقدة افتراضية عبر مشروع Virtual Kubelet مفتوح المصدر. عندما تواجه مجموعة AKS طلبًا متزايدًا يتجاوز سعة عقد الأجهزة الافتراضية لديها، يمكن لـ Kubernetes جدولة الـ pods على عقدة ACI افتراضية — ما يؤدي إلى تشغيل مثيلات حاويات ACI فعلية. يوفر ذلك توسعة متقطعة بلا حدود من دون تجهيز عقد أجهزة افتراضية إضافية مسبقًا، ولا تدفع إلا مقابل حوسبة ACI خلال فترة زيادة الطلب.

# Enable virtual nodes on an AKS cluster
az aks enable-addons \
  --name myAKSCluster \
  --resource-group MyRG \
  --addons virtual-node \
  --subnet-name VirtualNodeSubnet

# Schedule a burst pod on ACI via node selector
# spec:
#   nodeSelector:
#     kubernetes.io/role: agent
#     beta.kubernetes.io/os: linux
#     type: virtual-kubelet
#   tolerations:
#   - key: virtual-kubelet.io/provider
#     operator: Exists

متى تستخدم ACI أو AKS أو App Service؟

اختر ACI للمهام قصيرة الأجل، والمهام الدفعية، ووكلاء إنشاء CI، والحاويات المؤقتة التي لا تستدعي عبء Kubernetes. واختر AKS للخدمات المصغرة طويلة التشغيل ومتعددة الحاويات التي تتطلب اكتشاف الخدمات وفحوصات السلامة والتحديثات التدريجية وشبكات المجموعات. واختر App Service عندما تريد مزايا PaaS مثل فتحات النشر والشهادات المُدارة والمصادقة المضمنة، من دون إدارة شبكات الحاويات بنفسك.

تحقق سريع

اختبر مدى فهمك لمفاهيم Microsoft Azure Fundamentals (AZ-900) الواردة في هذا الدرس.

مراجعة الدرس

تعلمت في هذا الدرس أن Azure Container Instances تشغّل الحاويات خلال ثوانٍ من دون إدارة الخوادم، وتُحتسب تكلفتها لكل ثانية من وحدة المعالجة المركزية والذاكرة، وأن مجموعات الحاويات تتيح لحاويات متعددة مشاركة الشبكة والتخزين مثل Kubernetes pod، وأن سياسات إعادة التشغيل (Always وNever وOnFailure) تتحكم في دورة حياة الحاوية بعد خروجها. بعد ذلك سنستكشف مفاهيم Kubernetes الخاصة بـ Azure.

الأسئلة الشائعة

هل درس «Azure Container Instances» مجاني؟

نعم — نص درس «Azure Container Instances» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cloud & IT Cert Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.

ماذا ستتعلم في «Azure Container Instances»؟

شغّل تطبيقًا في حاوية خلال ثوانٍ باستخدام ACI من دون إدارة الخوادم، وهيّئ متغيرات البيئة وعمليات تركيب وحدات التخزين، وتعرّف على فوترة ACI. تتمرن على Cloud & IT Cert Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Cloud & IT Cert Prep؟

لا تُشترط خبرة سابقة. Cloud & IT Cert Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «Azure Container Instances»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Cloud & IT Cert Prep هذا؟

نعم. كل درس في Cloud & IT Cert Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. Azure Container Registry
  2. Azure Container Instances
  3. مفاهيم Kubernetes لـ Azure
  4. نشر أعباء العمل على AKS
← العودة إلى Cloud & IT Cert Prep