انتقل إلى المحتوى

الحلول · الحاويات

ما حجم الخادم الذي يحتاجه Docker؟

الحاويات عمليات تتشارك نواة واحدة، وليست أجهزة افتراضية صغيرة: يشغل الـdaemon نحو 100 MB، وكل ما بعد ذلك مجرد عملياتك أنت. لذا فالإجابة أصغر مما يتوقعه السؤال: الوكيل والتطبيق وقاعدة البيانات والذاكرة المؤقتة معاً تبلغ نحو 515 MB، وهذا يتسع بسهولة مع مساحة فائضة على BD-8 بسعر $12.90.

ما الذي تستهلكه الحاوية فعلاً

نطاقات تقديرية، لا اختبارات أداء

صورتك وإعداداتك وحركة البيانات لديك تغيّر هذه الأرقام أكثر مما يستطيع أي جدول. شغّل docker stats على حزمتك، فهذا هو الرقم الوحيد الذي ينطبق عليك.

الذاكرة المقيمة المعتادة لأحمال عمل الحاويات الشائعة
الحاويةالذاكرة المعتادةيتسع على BD-8 (8 GB)
وكيل عكسي (reverse proxy)nginx, Caddy, Traefik15–60 MB129 في الحد الأعلى
تطبيق ويب صغيرNode وPython وGo: عملية واحدة60–200 MB38 في الحد الأعلى
PostgreSQL أو MySQLبيانات صغيرة، المجمّع الافتراضي200–500 MB15 في الحد الأعلى
Redisكذاكرة مؤقتة، مقيدة بـ maxmemory20–200 MB38 في الحد الأعلى
خدمة JVMJava, Kotlin, Elasticsearch500–2000 MB3 في الحد الأعلى

الحساب

ما تتسع له كل خطة

الذاكرة، مطروحاً منها 300 MB لنظام التشغيل و100 MB للـdaemon، مقسومة على ما تستهلكه حاوياتك. العمود الأوسط حزمة كاملة (وكيل، وتطبيق، وقاعدة بيانات، وذاكرة مؤقتة) بنحو 515 MB.

سعة الحاويات والحزم لكل خطة، مع القرص والأسعار المباشرة
الخطةRAMالحزم الكاملةالتطبيقات الصغيرةالقرصالسعرنشر
VPS-11 GB1325 GB$9.90نشر
BD-88 GB1538100 GB$12.90نشر
BD-1212 GB2359200 GB$17.90نشر
BD-2424 GB46120300 GB$31.90نشر

القرص هو المفاجأة الثانية، وهي التي يصادفها الناس لاحقاً: الصور ووحدات التخزين والسجلات تتراكم بصمت. ضع docker system prune في مهمة cron أسبوعية قبل أن يصبح الأمر عاجلاً، لا بعده.

مقارنة مع أنفسنا

متى لا ينبغي لك شراء هذا

منصة الحاويات المُدارة تكلّف أكثر لأنها تتولى التشغيل عنك. وهذا شيء حقيقي يستحق الشراء.

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

أسئلة

ما يسأل عنه الناس قبل الشراء.

كم من RAM يستهلك Docker نفسه؟
قليل جداً، وهذا ما يفاجئ الناس. يشغل Docker daemon نحو 100 MB، وكل حاوية بعد ذلك مجرد عملية: لا يوجد نظام تشغيل ثانٍ، ولا نواة ثانية، ولا تكلفة ثابتة لكل حاوية كما في الجهاز الافتراضي. لذا فالحساب بسيط: ذاكرة خادمك، مطروحاً منها نحو 300 MB لنظام التشغيل و100 MB للـdaemon، مقسومة على العمليات التي تشغلها فعلاً.
كم حاوية يستطيع VPS صغير تشغيلها؟
أكثر مما يوحي به السؤال، لأن "الحاوية" ليست وحدة حجم. عشرة وكلاء عكسيين وElasticsearch واحد خادمان مختلفان تماماً. على BD-8 (8 GB مقابل $12.90) يبلغ الوكيل وتطبيق الويب وقاعدة البيانات والذاكرة المؤقتة معاً نحو 515 MB، ما يترك معظم الخادم فائضاً. الجدول أعلاه يجري القسمة؛ شغّل `docker stats` على حزمتك للحصول على الرقم الذي ينطبق عليك فعلاً.
هل VPS أرخص من منصة حاويات مُدارة؟
على السعر، دائماً تقريباً، لكن هذه ليست المقارنة كلها. المنصة تتقاضى أكثر لأنها تتولى التشغيل: التحديثات، وإعادة التشغيل، والشهادات، والتنبيه في الثالثة فجراً. أما VPS فيمنحك صلاحيات root ويعيد إليك كل ذلك. إن أردت تشغيل الحاويات وكنت مستعداً لتحمّل هذا العمل، فإن VPS أرخص بكثير. وإن لم تكن تريد ذلك، فادفع للمنصة؛ نفضّل أن نقول لك هذا على أن نبيعك خادماً ينتهي به الأمر مهملاً وعليه خدمة daemon غير مُحدَّثة.
هل أحتاج إلى Docker Swarm أو Kubernetes؟
على خادم واحد، لا. يكفي Compose لحزمة تعمل على خادم واحد، وهو الإجابة الصحيحة للغالبية العظمى من الإعدادات المستضافة ذاتياً، فوظيفة أداة التنسيق هي الجدولة عبر عدة خوادم، ومع خادم واحد لا يوجد ما يُجدوَل. لجأ إلى Kubernetes حين تملك فعلاً عدة خوادم وسبباً يبرر التعقيد، لا قبل ذلك.
ما الذي ينهار أولاً: الذاكرة أم المعالج أم القرص؟
الذاكرة عادةً، وانهيارها صاخب: أداة إنهاء العمليات عند نفاد الذاكرة في النواة تختار عملية وتنهيها، فيبدو الأمر كأن حاوية تُعاد تشغيلها بشكل غامض. حدّد قيوداً للذاكرة لكل حاوية حتى تكون الحاوية المسيئة هي التي تتوقف لا قاعدة بياناتك. القرص هو المفاجأة الثانية: الصور ووحدات التخزين والسجلات تتراكم بصمت، لذا مكان `docker system prune` في مهمة cron أسبوعية قبل أن يصبح الأمر عاجلاً بوقت طويل.
أي صورة نظام يجب أن يشغلها الخادم المضيف؟
أي صورة من صورنا، فكل خطة تشغّل كل صورة، وDocker يعمل عليها جميعاً. Ubuntu LTS هو الخيار الافتراضي الذي يستحق الاختيار إن لم يكن لديك تفضيل، لأن معظم توثيق الحاويات يفترضه. التوزيعة أقل أهمية بكثير مما يبدو: الحاويات تجلب بيئة المستخدم الخاصة بها، فلا يكاد الخادم المضيف يكون أكثر من نواة وdaemon.