إدارة المحتوى العام باستخدام تسجيل حاويات Azure

هذه المقالة هي نظرة عامة على الممارسات وسير العمل لاستخدام سجل محلي مثل سجل حاوية Azure للاحتفاظ بنسخ من المحتوى العام، مثل صور الحاوية في Docker Hub.

المخاطر المرتبطة بالمحتوى العام

قد يكون للبيئة الخاصة بك تبعيات على المحتوى العام مثل صور الحاوية العامة أو مخططات Helm أو نهج Open Policy Agent (OPA) أو عناصر أخرى. على سبيل المثال، قد تقوم بتشغيل nginx لتوجيه الخدمة أو docker build FROM alpine عن طريق سحب الصور مباشرة من Docker Hub أو سجل عام آخر.

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

المصادقة مع Docker Hub

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

عند إجراء طلبات سحب مجهولة متكررة، قد ترى أخطاء Docker مشابهة ل ERROR: toomanyrequests: Too Many Requests. Docker Hub أو You have reached your pull rate limit. المصادقة عليها لمنع هذه الأخطاء.

إشعار

اعتبارا من 2 نوفمبر 2020، تنطبق حدود معدل التنزيل على الطلبات المجهولة والمصادق عليها إلى Docker Hub من حسابات Docker Free Plan ويتم فرضها بواسطة عنوان IP ومعرف Docker، على التوالي.

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

للحصول على التفاصيل، راجع تسعير Docker واشتراكاته وشروط خدمة Docker.

رمز الوصول إلى Docker Hub

يدعم Docker Hub رموز الوصول الشخصية كبدائل لكلمة مرور Docker عند المصادقة على Docker Hub. يُوصى باستخدام الرموز المميزة للخدمات الآلية التي تسحب الصور من Docker Hub. يمكنك إنشاء العديد من الرموز المميزة لمستخدمين أو خدمات مختلفة، وإلغاء الرموز المميزة عند عدم الحاجة إليها.

للمصادقة باستخدام docker login رمز مميز، احذف كلمة المرور في سطر الأوامر. عند مطالبتك بكلمة مرور، أدخل الرمز المميز بدلاً من ذلك. إذا قمت بتمكين المصادقة ذات العاملين لحساب Docker Hub الخاص بك، يجب عليك استخدام رمز وصول شخصي عند تسجيل الدخول من Docker CLI.

المصادقة من خدمات Azure

تدعم العديد من خدمات Azure بما في ذلك App Service ومثيلات حاويات Azure سحب الصور من السجلات العامة مثل Docker Hub لعمليات نشر الحاويات. إذا كنت بحاجة إلى نشر صورة من Docker Hub، نوصيك بتهيئة الإعدادات للمصادقة باستخدام حساب Docker Hub. أمثلة:

خدمة التطبيق

  • مصدر الصورة: Docker Hub
  • الوصول إلى المستودع: خاص
  • تسجيل الدخول: <اسم مستخدم Docker Hub>
  • كلمة المرور: <رمز Docker Hub المميز>

للحصول على التفاصيل، راجع سحب Docker Hub المصادق عليه على App Service.

مثيلات Azure Container

  • مصدر الصورة: Docker Hub أو سجل آخر
  • نوع الصورة: خاص
  • خادم تسجيل الدخول إلى سجل الصور: docker.io
  • اسم مستخدم سجل الصور: <اسم مستخدم Docker Hub>
  • كلمة مرور تسجيل الصورة: <رمز Docker Hub المميز>
  • الصورة: docker.io/<اسم الرد>:<العلامة>

تكوين Artifact Cache لاستهلاك المحتوى العام

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

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

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

كخطوة موصى بها لمرة واحدة، قم باستيراد الصور الأساسية والمحتوى العام الآخر إلى سجل حاوية Azure. يدعم الأمر az acr import في Azure CLI استيراد الصور من السجلات العامة مثل Docker Hub وMicrosoft Container Registry ومن سجلات الحاويات الخاصة الأخرى.

az acr import لا يتطلب تثبيت Docker محليا. يمكنك تشغيله من خلال تثبيت محلي لـ Azure CLI أو مباشرة في Azure Cloud Shell. وهو يدعم الصور من أي نوع نظام تشغيل، أو صور متعددة المعمار، أو عناصر OCI مثل مخططات Helm.

بناءً على احتياجات مؤسستك، يمكنك الاستيراد إلى سجل مخصص أو مستودع في سجل مشترك.

az acr import \
  --name myregistry \
  --source docker.io/library/hello-world:latest \
  --image hello-world:latest \
  --username <Docker Hub username> \
  --password <Docker Hub token>

تحديث مراجع الصور

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

  • قم بتحديث مراجع الصور لاستخدام التسجيل الخاص. على سبيل المثال، تحديث عبارة FROM baseimage:v1 في Dockerfile إلى FROM myregistry.azurecr.io/mybaseimage:v1
  • تكوين بيانات الاعتماد أو آلية مصادقة لاستخدام التسجيل الخاص. تعتمد الآلية الدقيقة على الأدوات التي تستخدمها للوصول إلى السجل وكيفية إدارة وصول المستخدم.
    • إذا كنت تستخدم مجموعة Kubernetes أو خدمة Azure Kubernetes للوصول إلى السجل، فشاهد سيناريوهات المصادقة.
    • تعرف على المزيد حول خيارات المصادقة باستخدام سجل حاوية Azure.

أتمتة تحديثات صور التطبيق

توسيع استيراد الصور، قم بإعداد مهمة Azure Container Registry لأتمتة إنشاءات صورة التطبيق عند تحديث الصور الأساسية. يمكن لمهمة الإنشاء التلقائي تعقب كل من تحديثات الصورة الأساسية وتحديثات التعليمات البرمجية المصدر.

للحصول على مثال مفصل، راجع كيفية استهلاك المحتوى العام وصيانته باستخدام مهام سجل حاويات Azure.

إشعار

يمكن لمهمة واحدة تم تكوينها مسبقًا أن تعيد تلقائيًا بناء كل صورة تطبيق تشير إلى صورة أساسية تابعة.

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