حول السجلات والمستودعات والأدوات

يقدم هذا المقال المفاهيم الرئيسية لسجلات الحاويات والمستودعات وصور الحاويات والأدوات ذات الصلة.

Registry, repositories, and artifacts

السجل

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

بالإضافة إلى صور الحاويات المتوافقة مع Docker، يدعم سجل حاويات Azure مجموعة من أدوات المحتوى بما في ذلك مخططات Helm وتنسيقات صور مبادرة الحاوية المفتوحة (OCI).

المستودع

المستودع هو مجموعة من صور الحاوية أو غيرها الأدوات في السجل الذي يحمل نفس الاسم، ولكن بعلامات مختلفة. على سبيل المثال، توجد الصور الثلاث التالية في مستودع acr-helloworld:

  • acr-helloworld:latest
  • acr-helloworld:v1
  • acr-helloworld:v2

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

  • marketing/campaign10-18/web:v2
  • marketing/campaign10-18/api:v3
  • marketing/campaign10-18/email-sender:v2
  • product-returns/web-submission:20180604
  • product-returns/legacy-integrator:20180715

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

الأدوات

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

علامة

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

يُعرف المستودع (أو المستودع ومساحة الاسم) بالإضافة إلى العلامة اسم الصورة. يمكنك دفع صورة وسحبها عن طريق تحديد اسمها في عملية الدفع أو السحب. تُستخدم العلامة latest بشكل افتراضي إذا لم تُوفر علامة في أوامر Docker.

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

للحصول على قواعد تسمية العلامة، راجع وثائق Docker.

الطبقة

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

Layers of a container image

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

لتوفير عزلة وحماية آمنة لمعالجة الطبقة المحتملة، لا يتم مشاركة الطبقات عبر السجلات.

البيان

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

يظهر بيان أساسي لصورة Linux hello-world مُشابه لما يلي:

{
  "schemaVersion": 2,
  "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
  "config": {
    "mediaType": "application/vnd.docker.container.image.v1+json",
    "size": 1510,
    "digest": "sha256:fbf289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e"
  },
  "layers": [
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "size": 977,
      "digest": "sha256:2c930d010525941c1d56ec53b97bd057a67ae1865eebf042686d2a2d18271ced"
    }
  ]
}

يمكنك سرد البيانات الخاصة بالمستودع باستخدام أمر Azure CLI az acr manifest list-metadata:

az acr manifest list-metadata --name <repositoryName> --registry <acrName>

على سبيل المثال، قم بسرد بيانات لمستودع "acr-helloworld":

az acr manifest list-metadata --name acr-helloworld --registry myregistry
[
  {
    "digest": "sha256:0a2e01852872580b2c2fea9380ff8d7b637d3928783c55beb3f21a6e58d5d108",
    "tags": [
      "latest",
      "v3"
    ],
    "timestamp": "2018-07-12T15:52:00.2075864Z"
  },
  {
    "digest": "sha256:3168a21b98836dda7eb7a846b3d735286e09a32b0aa2401773da518e7eba3b57",
    "tags": [
      "v2"
    ],
    "timestamp": "2018-07-12T15:50:53.5372468Z"
  },
  {
    "digest": "sha256:7ca0e0ae50c95155dbb0e380f37d7471e98d2232ed9e31eece9f9fb9078f2728",
    "tags": [
      "v1"
    ],
    "timestamp": "2018-07-11T21:38:35.9170967Z"
  }
]

ملخص البيان

تُعرف البيانات بواسطة تجزئة SHA-256 فريدة أو ملخص البيان. تُعرف كل صورة أو أداة -- سواء كانت بعلامة أم بدون علامة -- من خلال ملخصها. قيمة الملخص فريدة حتى إذا كانت بيانات طبقة الأداة مُطابقة لتلك التي الخاصة بأداة أخرى. هذه الآلية هي ما يسمح لك بدفع الصور ذات العلامات المتطابقة بشكل متكرر إلى السجل. على سبيل المثال، يمكنك دفع myimage:latest بشكل متكرر إلى سجلك دون خطأ لأنه يتم تعريف كل صورة بواسطة ملخصها الفريدة.

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

هام

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

معالجة الأدوات

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

المعالجة حسب العلامة: [loginServerUrl]/[repository][:tag]

المعالجة حسب الملخص: [loginServerUrl]/[repository@sha256][:digest]

عند استخدام Docker أو أدوات عميل أخرى لسحب الأدوات أو دفعها إلى سجل حاوية Azure، استخدم عنوان URL مُؤهل بالكامل للسجل، والذي يُطلق عليه أيضاً اسم خادم تسجيل الدخول. في سحابة Azure، يكون عنوان URL المُؤهل بالكامل لسجل حاويات Azure بالتنسيق myregistry.azurecr.io (جميع الأحرف صغيرة).

إشعار

  • لا يمكنك تحديد رقم المنفذ في عنوان URL لخادم تسجيل الدخول إلى السجل، مثل myregistry.azurecr.io:443.
  • تُستخدم العلامة latest بشكل افتراضي إذا لم تُوفر علامة في أوامرك.

الدفع بالعلامة

أمثلة:

docker push myregistry.azurecr.io/samples/myimage:20210106

docker push myregistry.azurecr.io/marketing/email-sender

السحب بالعلامة

مثال:

docker pull myregistry.azurecr.io/marketing/campaign10-18/email-sender:v2

السحب بملخص بيان

مثال:

docker pull myregistry.azurecr.io/acr-helloworld@sha256:0a2e01852872580b2c2fea9380ff8d7b637d3928783c55beb3f21a6e58d5d108

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

تعرف على المزيد حول تخزين السجلوتنسيقات المحتوى المدعومة في سجل حاويات Azure.

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