0Pricing
Docker & DevOps Fundamentals · درس

طبقات الصور وتحسينها

اكتشفوا كيفية تكوين طبقات صور Docker، وطبّقوا تقنيات لتحسين حجم الصورة وأوقات البناء

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

طبقات الصور: اللبنات الأساسية

ليست صور Docker ملفًا واحدًا ضخمًا، بل تُبنى من سلسلة من الطبقات للقراءة فقط. تخيلوا هذه الطبقات كشرائح شفافة مكدسة.

تمثل كل طبقة تغييرًا في الصورة، مما يجعل الصور فعالة ومرنة. ويُعد هذا التدرج في الطبقات أساسًا لطريقة عمل Docker.

طبقات الصور وتحسينها — رسم توضيحي 1

تعليمات Dockerfile والطبقات

عند كتابة Dockerfile، تنشئ كل تعليمة تقريبًا طبقة جديدة فوق الطبقة السابقة. وتساهم تعليمات مثل FROM وRUN وCOPY وADD جميعها في إنشاء طبقات جديدة.

ينفذ Docker هذه التعليمات بالتسلسل، وينشئ كل طبقة جديدة استنادًا إلى حالة الطبقة السابقة.

فحص سجل الصورة

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

هذه أداة فعالة لتصحيح مشكلات حجم الصور.

docker history my-image:latest

قوة التخزين المؤقت للطبقات

يستخدم Docker ذاكرة تخزين مؤقت ذكية أثناء الإنشاء. فإذا لم تتغير تعليمة في Dockerfile وسياقها (مثل الملفات التي يجري نسخها) منذ آخر عملية إنشاء، فسيعيد Docker استخدام الطبقة الموجودة.

يسرّع هذا الاستخدام المتكرر عمليات الإنشاء اللاحقة بدرجة كبيرة، إذ لا يحتاج Docker إلى إعادة تنفيذ الخطوات التي لم تتغير.

التحسين 1: ترتيب الطبقات بذكاء

يُعد ترتيب التعليمات في Dockerfile مهمًا للغاية للاستفادة الفعالة من التخزين المؤقت. ضعوا التعليمات التي نادرًا ما تتغير (مثل تثبيت تبعيات النظام) في الأعلى.

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

مثال: تحسين ترتيب الطبقات

قارنوا بين مقتطفي Dockerfile هذين. يضع الترتيب الجيد التبعيات المستقرة أولًا، مما يتيح لـ Docker تخزينها مؤقتًا وإعادة إنشاء الطبقات الخاصة بشفرة التطبيق المتغيرة فقط.

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["node", "server.js"]

التحسين 2: دمج أوامر RUN

ينشئ كل أمر RUN عادةً طبقة جديدة. يمكنكم تقليل عدد الطبقات، وغالبًا حجم الصورة النهائي، عن طريق دمج عدة أوامر في تعليمة RUN واحدة.

استخدموا العامل && \ لربط الأوامر معًا، بحيث تصبح جزءًا من طبقة ذرية واحدة.

مثال: ربط أوامر RUN

بدلًا من استخدام عدة أوامر RUN، اربطوها معًا باستخدام && \. ينشئ ذلك طبقة واحدة أكثر كفاءة لجميع هذه العمليات.

FROM ubuntu:latest
RUN apt-get update && \
    apt-get install -y curl && \
    rm -rf /var/lib/apt/lists/*
CMD ["bash"]

التحسين 3: تنظيف الملفات

احرصوا دائمًا على تنظيف الملفات التي لا تكون مطلوبة إلا أثناء عملية الإنشاء. فعلى سبيل المثال، قد تضيف ذاكرات التخزين المؤقت لمدير الحزم (مثل apt-get clean) أو مخرجات الإنشاء المؤقتة حجمًا كبيرًا إلى طبقات الصورة.

يضمن تنظيفها ضمن أمر RUN نفسه الذي أنشأها عدم بقائها في طبقة سابقة.

تحقق سريع: تحسين الصورة

تأملوا مقتطف Dockerfile التالي:

FROM alpine:latest
COPY . /app
RUN apk add --no-cache git
RUN apk add --no-cache make
CMD ["sh"]

أي تغيير من التغييرات التالية سيحسن Dockerfile هذا على أفضل نحو لتقليل حجم الصورة وربما تسريع عمليات إعادة الإنشاء؟

مراجعة: صور أصغر وأسرع

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

  • رتبوا التعليمات بعناية لزيادة الاستفادة من نتائج التخزين المؤقت للإنشاء.
  • ادمجوا أوامر RUN المتعددة في أمر واحد لتقليل عدد الطبقات.
  • نظفوا الملفات المؤقتة ضمن أوامر RUN الخاصة بها للحفاظ على صغر حجم الطبقات.

تساعد هذه التقنيات على إنشاء صور Docker أصغر وأسرع بناءً، وهو أمر ضروري لعمليات النشر الفعالة.

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

هل درس «طبقات الصور وتحسينها» مجاني؟

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

ماذا ستتعلم في «طبقات الصور وتحسينها»؟

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

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

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

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

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

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

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

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

  1. فهم Dockerfiles
  2. إنشاء صور Docker مخصّصة
  3. طبقات الصور وتحسينها
  4. البناء متعدد المراحل والصور الأصغر
← العودة إلى Docker & DevOps Fundamentals