Docker & DevOps Fundamentals · درس

تقليل حجم الصور باستخدام قواعد Slim وDistroless

قلّلوا حجم الصور النهائية باختيار صور أساس صغيرة، وإزالة أدوات البناء، واستخدام قواعد distroless أو scratch لتحميل أسرع وسطح هجوم أصغر

الدرس 4 من 413 خطوة

تقليل حجم الصور باستخدام قواعد Slim وDistroless درس مجاني في Docker & DevOps Fundamentals على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Docker & DevOps Fundamentals، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Docker & DevOps Fundamentals 4 دروس في المجموع.

لماذا يهم حجم الصورة

تُسحب الصور الأصغر بسرعة أكبر، وتبدأ أسرع، وتكلف أقل في التخزين، وتعرّض عددًا أقل من الحزم للمهاجمين. وتحسين الحجم مكسب للأداء والأمان معًا.

اختيار صورة أساس خفيفة

الصور الافتراضية مريحة لكنها ضخمة. ويمكن أن يؤدي استبدال node:20 (نحو 1GB) بـ node:20-slim أو node:20-alpine إلى تقليل مئات الميغابايت فورًا.

FROM node:20-slim

مقايضات Alpine

تتميز Alpine بصغر حجمها، لكنها تستخدم musl libc بدلًا من glibc، ما قد يؤدي أحيانًا إلى تعطّل الملفات الثنائية الأصلية. اختبر بعناية؛ فقد يكون الخيار -slim الأصغر والأكثر أمانًا في بعض الحالات.

FROM python:3.12-alpine

دمج طبقات RUN

تضيف كل RUN طبقة. اربط الأوامر ذات الصلة ونظّف الملفات في الطبقة نفسها، وإلا فستظل الملفات المحذوفة تزيد حجم الطبقة السابقة.

RUN apt-get update \
 && apt-get install -y curl \
 && rm -rf /var/lib/apt/lists/*

استخدم .dockerignore

يُبقي ملف .dockerignore الملفات غير الضرورية خارج سياق البناء، مثل node_modules و.git والسجلات. ويعني السياق الأصغر عمليات بناء أسرع وطبقات أصغر.

# .dockerignore
.git
node_modules
*.log

مراجعة البناء متعدد المراحل

أنشئ البناء في مرحلة تحتوي على جميع المترجمات، ثم استخدم COPY --from لنسخ الناتج فقط إلى مرحلة نهائية نظيفة. ولن تُضمَّن أدوات البناء في الصورة.

FROM golang:1.22 AS build
WORKDIR /src
COPY . .
RUN go build -o app

FROM alpine:3.20
COPY --from=build /src/app /app

تعرّف على Distroless

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

FROM gcr.io/distroless/static-debian12
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]

لا توجد صدفة، ولا مشكلة

لا تحتوي Distroless على shell، لذلك لن تعمل أوامر RUN وdocker exec sh. نفّذ كل الإعدادات في المراحل السابقة، واستخدم الوسم :debug عندما تحتاج إلى الفحص من الداخل.

قاعدة scratch

بالنسبة إلى الملفات الثنائية الثابتة بالكامل (Go وRust)، لا يضمّن FROM scratch شيئًا سوى الملف التنفيذي، وغالبًا ما يكون الحجم الإجمالي بضعة ميغابايتات.

FROM scratch
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]

قياس مكاسبك

استخدم docker images لمقارنة الأحجام، وdocker history لمعرفة الطبقات الأكبر. حسّن أكبر الطبقات حجمًا أولًا.

docker history myapp:latest

ثبّت الإصدارات، لا تستخدم latest

يجعل تثبيت وسم أو digest محدد عمليات البناء قابلة لإعادة الإنتاج، ويتجنب الزيادات المفاجئة في الحجم عندما تتغير الصورة المصدرية latest.

FROM node:20.11.1-slim

تحقق سريع

ما المميز في صورة distroless؟

مراجعة

أصبح بإمكانك الآن تقليص الصور بدرجة كبيرة:

  • اختر صور الأساس -slim أو -alpine أو distroless أو scratch
  • اربط طبقات RUN ونظّفها، واستخدم .dockerignore
  • تزيل عمليات البناء متعددة المراحل أدوات البناء
  • قِس الأحجام باستخدام docker history وثبّت الإصدارات

تعني الصور الأصغر عمليات نشر أسرع وأكثر أمانًا.

البدء مجانًا

تعلم Docker & DevOps Fundamentals مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
12
الدروس
48

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

هل درس «تقليل حجم الصور باستخدام قواعد Slim وDistroless» مجاني؟

نعم — نص درس «تقليل حجم الصور باستخدام قواعد Slim وDistroless» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Docker & DevOps Fundamentals، انتقل إلى CoddyKit PRO. تتضمن دورة Docker & DevOps Fundamentals 4 دروس في المجموع.

ماذا ستتعلم في «تقليل حجم الصور باستخدام قواعد Slim وDistroless»؟

قلّلوا حجم الصور النهائية باختيار صور أساس صغيرة، وإزالة أدوات البناء، واستخدام قواعد distroless أو scratch لتحميل أسرع وسطح هجوم أصغر تتمرن على Docker & DevOps Fundamentals مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Docker & DevOps Fundamentals؟

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

كم من الوقت يستغرق درس «تقليل حجم الصور باستخدام قواعد Slim وDistroless»؟

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

هل يمكنني كتابة وتشغيل أكواد في درس Docker & DevOps Fundamentals هذا؟

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

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

  1. البناء متعدد المراحل لتحقيق الكفاءة
  2. الاستفادة من التخزين المؤقت للبناء
  3. أفضل ممارسات أمان Dockerfile
  4. تقليل حجم الصور باستخدام قواعد Slim وDistroless
← العودة إلى Docker & DevOps Fundamentals