0Pricing
Cloud & IT Cert Prep · درس

ECR: تخزين صور الحاويات وسحبها

ادفع صور Docker إلى Amazon ECR، وطبّق سياسات دورة الحياة لحذف الصور القديمة، واسحب الصور بأمان إلى مهام ECS

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

ما هو Amazon ECR؟

إن Amazon Elastic Container Registry (ECR) هو سجل صور حاويات مُدار بالكامل ومتوافق مع Docker. يخزن صور الحاويات ويديرها وينشرها بأمان داخل AWS. يلغي ECR الحاجة إلى تشغيل بنية تحتية خاصة بالسجل، ويتكامل أصلاً مع ECS وEKS وLambda (صور الحاويات) وCodeBuild. وتُكرَّر الصور المخزنة في ECR لتحقيق التوافر العالي، ويمكن فحصها تلقائياً بحثاً عن الثغرات الأمنية.

مستودعات ECR الخاصة والعامة

يدعم ECR نوعين من المستودعات: تتطلب المستودعات الخاصة في Amazon ECR مصادقة AWS لسحب الصور، وهي مناسبة لصور التطبيقات المملوكة. وتتحكم سياسات IAM وسياسات موارد المستودع في الوصول إليها. أما المستودعات العامة على ECR Public Gallery (public.ecr.aws) فتسمح بسحب الصور من أي مكان على الإنترنت دون مصادقة، وهي مناسبة للصور الأساسية مفتوحة المصدر والأدوات العامة والصور التي توفرها AWS (الصور الأساسية لـ Lambda وصور AMI المحسّنة لـ ECS). وتوفر المستودعات العامة حصة سحب مجانية مع حدود معدل للطلبات غير الموثقة.

# Create a private ECR repository
aws ecr create-repository \
  --repository-name 'myapp/backend' \
  --image-scanning-configuration scanOnPush=true \
  --image-tag-mutability IMMUTABLE

مصادقة Docker مع ECR

لسحب صور ECR الخاصة أو دفعها، يجب أن يصادق Docker باستخدام بيانات اعتماد AWS. استخدم aws ecr get-login-password للحصول على رمز مصادقة مؤقت، ثم مرره إلى docker login. ويظل الرمز صالحاً لمدة 12 ساعة. في خطوط CI/CD، حدّث الرمز قبل كل عملية دفع. تصادق عوامل مهام ECS وLambda وعُقد العمال في EKS تلقائياً مع ECR باستخدام دور IAM الخاص بها، لذلك لا يلزم تسجيل الدخول يدوياً عند سحب الصور أثناء التشغيل في بيئات AWS.

# Authenticate Docker CLI to ECR
aws ecr get-login-password --region us-east-1 | \
  docker login \
    --username AWS \
    --password-stdin \
    123456789012.dkr.ecr.us-east-1.amazonaws.com

دفع الصور إلى ECR

يتكون سير العمل المعتاد لدفع صورة إلى ECR من: (1) إنشاء صورة Docker محلياً؛ (2) وضع وسم للصورة باستخدام URI الخاص بمستودع ECR (بالتنسيق: account.dkr.ecr.region.amazonaws.com/repo-name:tag)؛ (3) دفع الصورة الموسومة. يخزن ECR كل طبقة من طبقات الصورة بشكل منفصل، ويزيل تكرار الطبقات المشتركة بين الصور، ما يقلل تكاليف التخزين. ويمنع استخدام الوسوم غير القابلة للتغيير استبدال الوسم، ويضمن بقاء إصدارات الصور المنشورة ثابتة وقابلة للتدقيق.

# Build, tag, and push
docker build -t myapp/backend .
docker tag myapp/backend \
  123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp/backend:v1.2.3
docker push \
  123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp/backend:v1.2.3

قابلية تغيير وسم الصورة

تمنع الوسوم IMMUTABLE استبدال الوسم بصورة مختلفة. عندما تكون قابلية تغيير الوسوم مضبوطة على IMMUTABLE، تفشل محاولة دفع صورة جديدة إلى وسم موجود، ويجب استخدام وسم جديد. تُعد هذه ممارسة موصى بها في بيئة الإنتاج؛ فهي تضمن أن :v1.2.3 يشير دائماً إلى ملخص الصورة نفسه تماماً، ما يتيح عمليات تراجع وتدقيق موثوقة. استخدم الوسوم MUTABLE فقط لفروع التطوير أو وسم :latest المريح في البيئات غير الإنتاجية.

فحص الصور بحثاً عن الثغرات

فعّل خيار الفحص عند الدفع لفحص الصور تلقائياً بحثاً عن CVEs المعروفة عند دفعها. يستخدم ECR تكامل Amazon Inspector (الفحص المحسّن) أو Basic Scanning المدمج، المدعوم من أداة الفحص مفتوحة المصدر Clair. يوفر الفحص المحسّن فحصاً مستمراً، وليس عند الدفع فقط، ويغطي حزم نظام التشغيل والحزم الخاصة بلغات البرمجة (Node.js وPython وJava). راجع نتائج الفحص في وحدة تحكم ECR أو عبر إشعارات EventBridge المرسلة إلى فريق الأمان.

# Enable enhanced scanning for a registry
aws ecr put-registry-scanning-configuration \
  --scan-type ENHANCED \
  --rules '[{"repositoryFilters": [{"filter": "*", "filterType": "WILDCARD"}], "scanFrequency": "CONTINUOUS_SCAN"}]'

سياسات دورة الحياة لإدارة تكاليف الصور

يفرض ECR رسوماً على التخزين لكل غيغابايت شهرياً. ومن دون إدارة، تتراكم الصور القديمة إلى ما لا نهاية، فتزداد التكاليف. تعمل سياسات دورة الحياة على انتهاء صلاحية الصور وحذفها تلقائياً استناداً إلى قواعد، مثل الاحتفاظ بآخر 10 إصدارات موسومة فقط، أو حذف الصور غير الموسومة التي يزيد عمرها على 7 أيام. تُنفذ سياسات دورة الحياة يومياً. وهذا مهم بشكل خاص في خطوط CI/CD التي تدفع صوراً جديدة مع كل عملية حفظ، إذ قد يتراكم فيها مئات الصور أسبوعياً.

aws ecr put-lifecycle-policy \
  --repository-name 'myapp/backend' \
  --lifecycle-policy-text '{
    "rules": [
      {
        "rulePriority": 1,
        "description": "Keep last 10 tagged images",
        "selection": {"tagStatus": "tagged", "tagPrefixList": ["v"], "countType": "imageCountMoreThan", "countNumber": 10},
        "action": {"type": "expire"}
      },
      {
        "rulePriority": 2,
        "description": "Delete untagged images after 7 days",
        "selection": {"tagStatus": "untagged", "countType": "sinceImagePushed", "countUnit": "days", "countNumber": 7},
        "action": {"type": "expire"}
      }
    ]
  }'

الوصول إلى الصور بين الحسابات

لسحب الصور من مستودع ECR في الحساب A إلى ECS أو EKS أو Lambda في الحساب B، اضبط سياسة المستودع (سياسة قائمة على الموارد) في مستودع ECR بالحساب A، وامنح كيان IAM في الحساب B صلاحية استدعاء ecr:GetDownloadUrlForLayer وecr:BatchGetImage وecr:BatchCheckLayerAvailability. يلغي ذلك الحاجة إلى نسخ الصور بين الحسابات، ويتيح إدارة مركزية للصور مع استهلاك موزع.

نسخ ECR المتماثل لعمليات النشر متعددة المناطق

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

aws ecr put-replication-configuration \
  --replication-configuration '{
    "rules": [{
      "destinations": [
        {"region": "eu-west-1", "registryId": "123456789012"},
        {"region": "ap-southeast-1", "registryId": "123456789012"}
      ],
      "repositoryFilters": [{"filter": "prod/*", "filterType": "PREFIX_MATCH"}]
    }]
  }'

تشفير ECR

يشفّر ECR الصور أثناء السكون باستخدام التشفير من جانب الخادم. ويستخدم افتراضياً مفتاحاً تديره AWS (AWS_MANAGED_KEY). ولمزيد من التحكم وقابلية التدقيق، اضبط مفتاح KMS مُداراً من العميل (CMK). باستخدام CMK، يمكنك التحكم في تدوير المفتاح، وإبطال الوصول عبر تعطيل المفتاح، وتدقيق جميع عمليات فك التشفير في CloudTrail. فعّل تشفير KMS عندما تتطلب المتطلبات التنظيمية (PCI-DSS وHIPAA وFedRAMP) مفاتيح تشفير يتحكم فيها العميل.

استخدام ECR مع ECS في خطوط CI/CD

يتضمن خط CI/CD متكامل لـ ECS مع ECR ما يلي: (1) يدفع المطور الشفرة إلى Git؛ (2) ينشئ CodeBuild صورة Docker ويدفعها إلى ECR مع وسم يتضمن SHA الخاص بعملية الحفظ؛ (3) يحدّث CodePipeline تعريف مهمة ECS باستخدام URI الصورة الجديدة؛ (4) تنفذ ECS تحديثاً تدريجياً للخدمة، وتسحب الصورة الجديدة من ECR. تستخدم مهام ECS دور تنفيذ المهمة للمصادقة مع ECR تلقائياً، لذلك لا حاجة إلى إدارة بيانات الاعتماد في خط الأنابيب عند سحب الصور أثناء التشغيل.

تحقق سريع

اختبر مدى فهمك لمفاهيم AWS Solutions Architect (SAA-C03) الواردة في هذا الدرس.

مراجعة الدرس

تعلمت في هذا الدرس أن مستودعات ECR الخاصة تخزن صور الحاويات مع وصول تتحكم فيه IAM، ووسوم غير قابلة للتغيير لتحقيق استقرار الإنتاج، وفحص تلقائي للثغرات باستخدام Inspector؛ وأن سياسات دورة الحياة تنهي صلاحية الصور القديمة وغير الموسومة تلقائياً للتحكم في تكاليف التخزين ضمن بيئات CI/CD النشطة؛ وأن النسخ المتماثل في ECR ينسخ الصور إلى مناطق وحسابات أخرى لعمليات النشر متعددة المناطق مع تقليل زمن سحب الصور. بعد ذلك، سنستكشف التوسعة التلقائية لخدمة ECS والتكامل مع موازنة التحميل.

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

هل درس «ECR: تخزين صور الحاويات وسحبها» مجاني؟

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

ماذا ستتعلم في «ECR: تخزين صور الحاويات وسحبها»؟

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

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

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

كم من الوقت يستغرق درس «ECR: تخزين صور الحاويات وسحبها»؟

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

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

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

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

  1. عناقيد ECS وتعريفات المهام والخدمات
  2. نوع تشغيل EC2 في مقابل Fargate
  3. ECR: تخزين صور الحاويات وسحبها
  4. التوسّع التلقائي لخدمات ECS وموازنة التحميل
← العودة إلى Cloud & IT Cert Prep