استيراد صور الحاوية إلى سجل حاويات

يمكنك بسهولة استيراد (نسخ) صور الحاويات إلى سجل حاويات Azure، دون استخدام أوامر Docker. على سبيل المثال، استيراد الصور من سجل تطوير إلى سجل إنتاج، أو نسخ الصور الأساسية من سجل عام.

يعالج Azure Container Registry العديد من السيناريوهات الشائعة لنسخ الصور والبيانات الاصطناعية الأخرى من سجل موجود:

  • استيراد صور من سجل عام

  • استيراد الصور أو عناصر OCI بما في ذلك مخططات Helm 3 من سجل حاوية Azure آخر، في نفس الوقت، أو اشتراك أو مستأجر Azure مختلف

  • الاستيراد من سجل حاويات خاص غير Azure

استيراد صورة في سجل حاويات Azure له الفوائد التالية عبر استخدام أوامر Docker CLI:

  • إذا كانت بيئة العميل لا تحتاج إلى تثبيت Docker محلي، يمكنك استيراد أي صورة حاوية، بغض النظر عن نوع نظام التشغيل المدعوم.

  • إذا قمت باستيراد صور متعددة البنى (مثل صور Docker الرسمية)، يتم نسخ الصور لجميع البنيات والأنظمة الأساسية المحددة في قائمة البيان.

  • إذا قمت بالوصول إلى السجل الهدف، فلا يتعين عليه استخدام نقطة النهاية العامة للسجل.

هام

  • يتطلب استيراد الصور دعم السجل الخارجي RFC 7233. نوصي باستخدام سجل يدعم نطاقات RFC 7233 أثناء استخدام الأمر az acr import مع عنوان URI للسجل لتجنب الفشل.

القيود

  • الحد الأقصى لعدد البيانات لصورة مستوردة هو 50.
  • الحد الأقصى لحجم طبقة صورة مستوردة من سجل عام هو 2 GiB.

لاستيراد صور الحاوية، تتطلب هذه المقالة تشغيل Azure CLI في Azure Cloud Shell أو محليًا (الإصدار 2.0.55 أو من المُستحسن استخدام إصدار أحدث). قم بتشغيل az --version للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.

إشعار

إذا كنت بحاجة إلى توزيع صور حاوية متطابقة عبر مناطق Azure متعددة، فإن تطبيق سجل الحاوية من Azure يدعم أيضًا النسخ المتماثل الجغرافي. عن طريق النسخ المتماثل الجغرافي لسجل (مستوى الخدمة المتميزة المطلوب)، يمكنك خدمة مناطق متعددة مع أسماء الصور والعلامات المتطابقة من سجل واحد.

هام

تم إدخال تغييرات على استيراد الصور بين سجليّ حاويات Azure اعتبارًا من يناير 2021:

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

المتطلبات الأساسية

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

لاستيراد صورة إلى سجل حاويات Azure، يجب أن يكون لدى هويتك أذونات كتابة إلى سجل الهدف (على الأقل دور المساهم، أو دور مخصص يسمح بإجراء importImage). راجع أذونات سجل حاويات Azure وأدوارها.

الاستيراد من سجل عام

هام

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

الاستيراد من Docker Hub

على سبيل المثال، استخدم الأمر az acr import لاستيراد صورة hello-world:latest متعددة البُنى من Docker Hub إلى سجل يسمى myregistry. نظرًا لأن hello-world هو صورة رسمية من Docker Hub، فإن هذه الصورة موجودة في مستودع library الافتراضي. قم بتضمين اسم المستودع وعلامة (اختياريًا) في قيمة معلمة الصورة --source. (يمكنك تحديد صورة اختياريًا من خلال ملخصها الظاهر بدلًا من تحديدها من خلال الوسم، ما يضمن إصدارًا معينا من الصورة.)

az acr import \
  --name myregistry \
  --source docker.io/library/hello-world:latest \
  --image hello-world:latest

يمكنك التحقق من أن العديد من البيانات مقترنة بهذه الصورة عن طريق تشغيل الأمر az acr manifest list-metadata:

az acr manifest list-metadata \
  --name hello-world \
  --registry myregistry

لاستيراد البيانات الاصطناعية عن طريق الملخص دون إضافة علامة:

az acr import \
   --name myregistry \
   --source docker.io/library/hello-world@sha256:abc123 \
   --repository hello-world

إذا كان لديك حساب Docker Hub، نُوصي باستخدام بيانات الاعتماد عند استيراد صورة من Docker Hub. قم بتمرير اسم مستخدم Docker Hub وكلمة المرور أو الرمز المميز للوصول الشخصي كمعلمات إلى az acr import. يستورد المثال التالي صورة عامة من مستودع tensorflow في Docker Hub، باستخدام بيانات اعتماد Docker Hub:

az acr import \
  --name myregistry \
  --source docker.io/tensorflow/tensorflow:latest-gpu \
  --image tensorflow:latest-gpu
  --username <Docker Hub user name>
  --password <Docker Hub token>

الاستيراد من سجل حاويات Microsoft

على سبيل المثال، قم باستيراد صورة ltsc2019 الأساسية لخادم Windows من مستودع windows في سجل حاويات Microsoft.

az acr import \
--name myregistry \
--source mcr.microsoft.com/windows/servercore:ltsc2019 \
--image servercore:ltsc2019

الاستيراد من سجل حاويات Azure في نفس مستأجر AD

يمكنك استيراد صورة من سجل حاوية Azure في نفس مستأجر AD باستخدام أذونات Microsoft Entra المتكاملة.

  • يجب أن يكون لدى هويتك أذونات Microsoft Entra للقراءة من السجل المصدر (دور القارئ) والاستيراد إلى السجل الهدف (دور المساهم، أو دور مخصص يسمح بإجراء importImage).

  • يمكن أن يكون السجل في نفس اشتراك Azure أو فس اشتراك مختلف في نفس مستأجر Active Directory.

  • قد يتم تعطيل الوصول العام إلى سجل المصدر. إذا تم تعطيل الوصول العام، حدد سجل المصدر حسب معرّف المورد بدلًا من اسم خادم تسجيل الدخول إلى السجل.

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

الاستيراد من سجل في نفس الاشتراك

على سبيل المثال، استيراد الصورة aci-helloworld:latest من سجل المصدر mysourceregistry إلى myregistry في نفس اشتراك Azure.

az acr import \
  --name myregistry \
  --source mysourceregistry.azurecr.io/aci-helloworld:latest \
  --image aci-helloworld:latest

المثال التالي يستورد الصورة aci-helloworld:latest إلى myregistry من سجل المصدر mysourceregistry فيه الوصول معطل إلى نقطة النهاية العامة للسجل. قم بتوفير معرّف المورد من سجل المصدر مع معلمة --registry. لاحظ أن معلمة --source لا تُحدد إلا مستودع المصدر والعلامة، وليس اسم خادم تسجيل الدخول للسجل.

az acr import \
  --name myregistry \
  --source aci-helloworld:latest \
  --image aci-helloworld:latest \
  --registry /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sourceResourceGroup/providers/Microsoft.ContainerRegistry/registries/mysourceregistry

يستورد المثال التالي صورة بواسطة ملخص بيان (تجزئة SHA-256، ممثلة كـ sha256:...) بدلًا من العلامة:

az acr import \
  --name myregistry \
  --source mysourceregistry.azurecr.io/aci-helloworld@sha256:123456abcdefg

الاستيراد من سجل في اشتراك مختلف

إشعار

لاستيراد صورة من سجل إلى آخر، يجب أن تضمن سجلات المصدر والهدف تسجيل كلتا المنطقتين ل Azure Container Registry (ACR) ضمن موفري موارد الاشتراك.

في المثال التالي، يُوجد mysourceregistry في اشتراك مختلف عن myregistry في نفس مستأجر Active Directory. قم بتوفير معرّف المورد من سجل المصدر مع معلمة --registry. لاحظ أن معلمة --source لا تُحدد إلا مستودع المصدر والعلامة، وليس اسم خادم تسجيل الدخول للسجل.

az acr import \
  --name myregistry \
  --source aci-helloworld:latest \
  --image aci-hello-world:latest \
  --registry /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sourceResourceGroup/providers/Microsoft.ContainerRegistry/registries/mysourceregistry

الاستيراد من سجل باستخدام بيانات اعتماد كيان الخدمة

لاستيراد من سجل لا يمكنك الوصول إليه باستخدام أذونات Active Directory المتكاملة، يمكنك استخدام بيانات اعتماد كيان الخدمة (إذا كانت متوفرة) إلى سجل المصدر. قم بتوفير معرّف التطبيق وكلمة المرور الخاصين بكيان الخدمة Active Directory الذي لديه وصول ACRPull إلى سجل المصدر. إن استخدام كيان الخدمة يعد أمرًا مفيدًا لبناء أنظمة وأنظمة أخرى غير مراقبة التي تحتاج إلى استيراد الصور إلى سجلك.

az acr import \
  --name myregistry \
  --source sourceregistry.azurecr.io/sourcerrepo:tag \
  --image targetimage:tag \
  --username <SP_App_ID> \
  --password <SP_Passwd>

الاستيراد من سجل حاويات Azure في مستأجر AD مختلف

للاستيراد من سجل حاوية Azure في مستأجر Microsoft Entra مختلف، حدد السجل المصدر بواسطة اسم خادم تسجيل الدخول، وقم بتوفير بيانات الاعتماد التي تمكن الوصول إلى السحب إلى السجل.

استيراد عبر المستأجر باستخدام اسم المستخدم وكلمة المرور

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

az acr import \
  --name myregistry \
  --source sourceregistry.azurecr.io/sourcerrepo:tag \
  --image targetimage:tag \
  --username <SP_App_ID> \
  --password <SP_Passwd>

استيراد عبر المستأجر مع الرمز المميز للوصول

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

# Login to Azure CLI with the identity, for example a user-assigned managed identity
az login --identity --username <identity_ID>

# Get access token returned by `az account get-access-token`
az account get-access-token

في المستأجر الهدف، مرر الرمز المميز للوصول ككلمة مرور إلى الأمر az acr import. يحدد السجل المصدر اسم خادم تسجيل الدخول. لاحظ أنه لا يوجد اسم مستخدم مطلوب في هذا الأمر:

az acr import \
  --name myregistry \
  --source sourceregistry.azurecr.io/sourcerrepo:tag \
  --image targetimage:tag \
  --password <access-token>

إشعار

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

الاستيراد من سجل حاويات خاص غير Azure

قم باستيراد صورة من سجل خاص غير Azure عن طريق تحديد بيانات الاعتماد التي تمكن من سحب الوصول إلى السجل. على سبيل المثال، اسحب صورة من سجل Docker خاص:

az acr import \
  --name myregistry \
  --source docker.io/sourcerepo/sourceimage:tag \
  --image sourceimage:tag \
  --username <username> \
  --password <password>

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

تعرفت في هذه المقالة على كيفية استيراد صور حاوية إلى سجل حاويات Azure من سجل عام أو سجل خاص آخر.

  • لخيارات إضافية لاستيراد صور، راجع مرجع الأمر استيراد az acr.