خطوات الاستخدام
أدخل عدد الطبقات (Layers): يمثل هذا العدد إجمالي الطبقات في Dockerfile الخاص بك. كل أمر مثل RUN أو COPY أو ADD يُنشئ طبقة جديدة. كلما زاد عدد الطبقات، زاد وقت البناء. تأكد من حساب جميع الطبقات بما في ذلك الطبقات الأساسية (FROM) والطبقات الوسيطة.
أدخل متوسط وقت الطبقة (Average Layer Time) بالثواني: هذا هو الوقت التقريبي الذي تستغرقه كل طبقة لبنائها بدون استخدام التخزين المؤقت. يمكنك تقديره من خلال مراقبة أوقات البناء السابقة أو استخدام القيم الافتراضية مثل 30 ثانية. يختلف هذا الرقم حسب تعقيد الأوامر (مثل تثبيت الحزم أو نسخ الملفات الكبيرة).
أدخل نسبة نجاح التخزين المؤقت (Cache Hit Rate) كنسبة مئوية: تمثل هذه النسبة مدى فعالية التخزين المؤقت للطبقات. إذا لم تتغير الطبقة وملفاتها، يتم إعادة استخدامها من ذاكرة التخزين المؤقت، مما يقلل وقت البناء. أدخل قيمة بين 0 و 100. على سبيل المثال، إذا كنت تعيد بناء الصورة بنفس Dockerfile غالباً، فقد تكون النسبة 80% أو أعلى.
الناتج: يتم حساب وقت البناء المقدر بالثواني باستخدام الصيغة: Time = layers × avgLayerTime × (1 - cacheHit/100). يتم ضرب عدد الطبقات في متوسط وقت الطبقة لتحصل على الوقت الإجمالي بدون تخزين مؤقت، ثم يتم تخفيضه بنسبة التخزين المؤقت. على سبيل المثال، إذا كان لديك 10 طبقات، كل طبقة 30 ثانية، ونسبة تخزين مؤقت 50%، فإن الوقت = 10 × 30 × 0.5 = 150 ثانية.
أمثلة محلولة
تطبيقات عملية على وقت بناء Docker بخطوات الحل كاملة.
الحل
الحل: نطبق الصيغة: الوقت = عدد الطبقات × متوسط وقت الطبقة × (1 - نسبة التخزين المؤقت/100) = 8 × 45 × (1 - 0.6) = 8 × 45 × 0.4 = 144 ثانية. هذا يعني حوالي دقيقتين و 24 ثانية. إذا كان التخزين المؤقت أقل (مثلاً 20%) لكان الوقت 8 × 45 × 0.8 = 288 ثانية (أكثر من 4 دقائق). يمكن تحسين وقت البناء بتقليل عدد الطبقات (مثلاً دمج أوامر RUN) أو زيادة نسبة التخزين المؤقت باستخدام ترتيب أفضل للطبقات.
الحل
الوقت الأساسي = 12 × 60 × (1 - 0.75) = 12 × 60 × 0.25 = 180 ثانية (3 دقائق). إذا أضفت طبقة RUN جديدة لتثبيت حزمة إضافية (مثل scipy)، يصبح عدد الطبقات 13، لكن متوسط وقت الطبقة قد يزيد قليلاً لأن الحزمة الجديدة قد تستغرق وقتاً. لنفترض أن متوسط وقت الطبقة يصبح 62 ثانية. مع نفس نسبة التخزين المؤقت 75% (تذكر أن الطبقة الجديدة لن تكون في ذاكرة التخزين المؤقت في البداية، لذا في أول بناء ستكون نسبة التخزين المؤقت أقل، لكن للتبسيط نحتفظ بنفس النسبة). الوقت الجديد = 13 × 62 × 0.25 = 201.5 ثانية. الزيادة حوالي 21.5 ثانية.
أمثلة محسوبة
قيم مُدخَلة ونتيجة محسوبة فعليًا بواسطة وقت بناء Docker.
مرجع — كاشف نصفي
- عدد الطبقات
- 10
- متوسط وقت الطبقة (ثانية)
- 30
- نسبة نجاح التخزين المؤقت (%)
- 50
مرجع — كاشف كامل
- عدد الطبقات
- 5
- متوسط وقت الطبقة (ثانية)
- 60
- نسبة نجاح التخزين المؤقت (%)
- 100
مرجع — طبقات كثيرة سريعة
- عدد الطبقات
- 20
- متوسط وقت الطبقة (ثانية)
- 15
- نسبة نجاح التخزين المؤقت (%)
- 25
قيم مُدخَلة قياسية
- عدد الطبقات
- 10
- متوسط وقت الطبقة (ثانية)
- 8
- نسبة نجاح التخزين المؤقت (%)
- 50
قيم مُدخَلة مرتفعة
- عدد الطبقات
- 100
- متوسط وقت الطبقة (ثانية)
- 24
- نسبة نجاح التخزين المؤقت (%)
- 90
قيم مُدخَلة منخفضة
- عدد الطبقات
- 2
- متوسط وقت الطبقة (ثانية)
- 1
- نسبة نجاح التخزين المؤقت (%)
- 10