توصيات لوضع علامات على صور الحاوية وإصدارها

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

  • العلامات الثابتة - العلامات التي تعيد استخدامها، على سبيل المثال، للإشارة إلى إصدار رئيس أو ثانوي مثل mycontainerimage: 1.0.
  • علامات فريدة - علامة مختلفة لكل صورة تدفعها إلى سجل، مثل mycontainerimage: abc123.

علامات مستقرة

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

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

مثال

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

  • :1 - علامة ثابتة للإصدار الرئيس. يمثل1 الإصدار "الأحدث" أو "الأحدث" من 1. *.
  • :1.0- علامة ثابتة للإصدار 1.0، تسمح للمطور بالالتزام بتحديثات الإصدار 1.0، وعدم إعادة توجيهه إلى الإصدار 1.1 عند إصداره.

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

في هذه الحالة، يتم باستمرار صيانة العلامات الرئيسة والثانوية. من سيناريو الصورة الأساسية، يسمح هذا لمالك الصورة بتقديم صور مخدومة.

حذف البيانات غير المميزة

إذا تم تحديث صورة ذات علامة ثابتة، فإن الصورة التي تم وضع علامة عليها مسبقاً لا يتم تمييزها، ما ينتج عنه صورة معزولة. يظل بيان الصورة السابقة وبيانات الطبقة الفريدة في السجل. للحفاظ على حجم السجل الخاص بك، يمكنك بشكل دوري حذف البيانات غير المميزة الناتجة عن تحديثات الصور الثابتة. على سبيل المثال، auto-purge البيانات التي لا تحمل علامات أقدم من المدة المحددة، أو قم بتعيين retention policy للبيانات غير المميزة.

العلامات الفريدة

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

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

  • طابع التاريخ والوقت - هذا الأسلوب شائع إلى حد ما، حيث يمكنك تحديد وقت إنشاء الصورة بوضوح. ولكن، كيف يمكن ربطها بنظام البناء الخاص بك؟ هل يجب أن تجد البناء الذي تم الانتهاء منه في نفس الوقت؟ في أي منطقة زمنية أنت؟ هل تمت معايرة جميع أنظمة الإنشاء الخاصة بك وفقاً لـ UTC؟

  • تثبيت Git - يعمل هذا الأسلوب حتى تبدأ في دعم تحديثات الصورة الأساسية. في حال حدوث تحديث للصورة الأساسية، يبدأ نظام الإنشاء لديك بتثبيت Git نفسه مثل الإصدار السابق. ومع ذلك، فإن الصورة الأساسية لها محتوى جديد. بشكل عام، يوفر Git الالتزام علامة شبه ثابتة.

  • ملخص البيان - ترتبط كل صورة حاوية يتم دفعها إلى سجل الحاوية ببيان، يتم تحديده بواسطة تجزئة SHA-256 الفريدة أو الملخص. على الرغم من كونها فريدة من نوعها، إلا إن الملخص طويل وصعب القراءة وغير مرتبط ببيئة البناء الخاصة بك.

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

    إذا كانت مؤسستك تمتلك أنظمة بناء متعددة، فإن إضفاء البادئة على العلامة باسم نظام الإنشاء يُعد تبايناً في هذا الخيار: <build-system>-<build-id>. على سبيل المثال، يمكنك التمييز بين الإنشاءات من نظام إنشاء Jenkins لفريق API ونظام إنشاء Azure Pipelines لفريق الويب.

قفل علامات الصور المنشورة

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

لا يزال قفل الصورة المنشورة يسمح لك بإزالة الصور الأخرى غير المنشورة من السجل الخاص بك باستخدام ميزات Azure Container Registry للحفاظ على السجل الخاص بك. على سبيل المثال، يمكنك الإزالة التلقائية البيانات غير المميزة أو الصور غير المؤمنة الأقدم من المدة المحددة، أو قم بتعيين نهج استبقاء للعناصر غير المميزة.

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

للحصول على مناقشة أكثر تفصيلاً للمفاهيم الواردة في هذه المقالة، راجع منشور المدونة Docker Tagging: أفضل الممارسات لوضع علامات وإصدارات صور عامل الإرساء.

للمساعدة في تحقيق أقصى قدر من الأداء والاستخدام الفعال من حيث التكلفة لAzure Container Registry، راجع أفضل الممارسات لAzure Container Registry.