الماخذ الرئيسية
- استخدم صور Docker الرسمية لتحسين الأمان والأداء. قد يؤدي إنشاء صورك الخاصة إلى تكوين غير صحيح ويستغرق وقتًا أطول.
- استخدم إصدارات محددة من صور Docker لتجنب السلوك غير المتوقع والاشتباكات مع التبعيات. السحب والبناء باستخدام صور إصدار معين.
- قم بمسح صور Docker بحثًا عن الثغرات الأمنية باستخدام أمر docker scan. تحديد ما إذا كانت الصورة آمنة بدرجة كافية لتطبيقك.
Docker هو برنامج النقل بالحاويات الأكثر شيوعًا، ولكن لا يستخدمه الجميع بكفاءة. إذا لم تتبع أفضل ممارسات Docker، فيمكنك ترك تطبيقاتك عرضة لمشكلات الأمان أو مشكلات الأداء.
فيما يلي بعض أفضل الممارسات التي يمكنك اعتمادها لاستخدام ميزات Docker بشكل واسع النطاق. تعمل هذه الإجراءات على تحسين الأمان وتضمن إنشاء ملفات Docker قابلة للصيانة.
1. استخدم صور Docker الرسمية
عند وضع تطبيقك في حاوية، يجب عليك استخدام صورة Docker. يمكنك إنشاء صورة بتكوين مخصص أو استخدام صور Docker الرسمية.
يتطلب إنشاء صورك الخاصة أن تتعامل مع كل التكوينات بنفسك. على سبيل المثال، لإنشاء صورة لتطبيق Node.js، يجب عليك تنزيل Node.js وتبعياتها. تستغرق هذه العملية وقتًا طويلاً وقد لا تؤدي إلى التكوين الصحيح بالكامل.
توصي Docker باستخدام صورة Node.js الرسمية التي تأتي مع جميع التبعيات الصحيحة. تتمتع صور Docker بإجراءات أمان أفضل، وخفيفة الوزن، ويتم اختبارها لبيئات مختلفة. يمكنك العثور على الصور الرسمية على الصور الرسمية لدوكر صفحة.
2. استخدم إصدارات محددة من Docker Image
عادةً، عندما تقوم بسحب صورة رسمية، فإن الصورة التي تحمل أحدث علامة هي التي تمثل أحدث إصدار محدث من تلك الصورة. في كل مرة تقوم فيها بإنشاء حاوية من تلك الصورة، تكون نسخة مختلفة من الحاوية الأخيرة.
قد يؤدي البناء باستخدام إصدارات مختلفة من صور Docker إلى حدوث سلوك غير متوقع في تطبيقك. قد تتعارض الإصدارات مع التبعيات الأخرى وتؤدي في النهاية إلى فشل تطبيقك.
توصي Docker بالسحب والبناء باستخدام صور لإصدار معين. تحتوي الصور الرسمية أيضًا على وثائق وتغطي حالات الاستخدام الأكثر شيوعًا.
على سبيل المثال، بدلا من عامل ميناء سحب جبال الألب، يستخدم عامل ميناء سحب جبال الألب: 3.18.3. سوف يقوم Docker بسحب هذا الإصدار المحدد. ويمكنك بعد ذلك استخدامه في عمليات إنشاء متتالية، مما يقلل من الأخطاء في تطبيقك. يمكنك العثور على الإصدارات المحددة من الصور على صفحة صور Docker الرسمية، أسفل العلامات المدعومة وروابط Dockerfile المعنية:
3. مسح الصور بحثًا عن الثغرات الأمنية
كيف يمكنك تحديد أن الصورة التي تريد إنشاءها لا تحتوي على ثغرات أمنية؟ عن طريق المسح عليه. يمكنك مسح صور Docker ضوئيًا باستخدام أمر docker scan. بناء الجملة هو كما يلي:
docker scan [IMAGE]
يجب عليك أولاً تسجيل الدخول إلى عامل الإرساء لمسح الصورة ضوئيًا.
docker login
ثم قم بمسح الصورة المحددة التي تريد التحقق منها:
docker scan ubuntu: latest
أداة تسمى سينك يقوم بمسح الصورة، ويدرج أي ثغرات أمنية حسب خطورتها. يمكنك رؤية نوع الثغرة الأمنية وروابط المعلومات المتعلقة بها، بما في ذلك كيفية إصلاحها. يمكنك معرفة من خلال الفحص ما إذا كانت الصورة آمنة بدرجة كافية لتطبيقك.
4. استخدم صور Docker صغيرة الحجم
عندما تقوم بسحب صورة Docker، فإنها تأتي مع جميع أدوات النظام المساعدة. يؤدي هذا إلى زيادة حجم الصورة باستخدام الأدوات التي لا تحتاجها.
تشغل صور Docker الكبيرة مساحة تخزين ويمكن أن تؤدي إلى إبطاء وقت تشغيل الحاويات. لديهم أيضًا احتمال أكبر للثغرات الأمنية.
أنت تستطيع تقليل حجم صور Docker باستخدام صور Alpine. صور جبال الألب خفيفة الوزن وتأتي مع الأدوات الضرورية فقط. إنها تقلل مساحة التخزين، مما يجعل تطبيقك يعمل بشكل أسرع وأكثر كفاءة.
ستجد نسخة Alpine لمعظم الصور الرسمية على Docker. فيما يلي مثال لإصدارات Alpine لـ PostgreSQL:
5. تحسين التخزين المؤقت لطبقات الصور
يمثل كل أمر في Dockerfile طبقة على الصورة. تحتوي الطبقات على أدوات مساعدة مختلفة وتؤدي وظائف مختلفة. إذا نظرت إلى الصور الرسمية على Docker Hub، فسترى التعليمات المستخدمة لإنشائها.
يتضمن ملف Dockerfile كل ما تحتاجه لإنشاء الصورة. إنه أحد الأسباب التي تجعل الكثيرين يفضل المطورون Docker على الأجهزة الافتراضية.
إليك هيكل مثال لصورة جبال الألب:
عندما تقوم بإنشاء تطبيقك استنادًا إلى صورة ما، فإنك تضيف المزيد من الطبقات إلى الصورة. يقوم Docker بتشغيل التعليمات على ملف Dockerfile من الأعلى إلى الأسفل، وإذا تغيرت الطبقة، فيجب على Docker إعادة بناء الطبقات اللاحقة.
أفضل ممارسة هي ترتيب ملف Dockerfile الخاص بك من الملفات الأقل تغييرًا إلى الملفات التي تتغير كثيرًا. يمكن أن تكون التعليمات التي لا تتغير، مثل التثبيت، في أعلى الملف.
عندما تقوم بتغيير ملف، يبني Docker من الملفات التي تم تغييرها ويخزن الملفات التي لم تتغير فوقه مؤقتًا. ولذلك، تتم العملية بشكل أسرع.
انظر إلى المثال الموضح في الصورة أعلاه. إذا كان هناك تغيير في ملفات التطبيق، يقوم Docker بالبناء من هناك؛ ليس من الضروري تثبيت حزم npm مرة أخرى.
إذا قمت بالبناء من الصورة، فسيتم تنفيذ العملية بشكل أسرع من إعادة بناء جميع الطبقات الأخرى من جديد. يعمل التخزين المؤقت أيضًا على تسريع عملية سحب الصور ودفعها من Docker Hub.
7. استخدم ملف .dockerignore
عند إنشاء صورة باستخدام ملف Dockerfile، قد ترغب في الحفاظ على خصوصية بعض المعلومات. قد تكون بعض الملفات والمجلدات جزءًا من المشروع، لكنك لا تريد تضمينها في عملية الإنشاء.
يؤدي استخدام ملف .dockerignore إلى تقليل حجم الصورة بشكل كبير. وذلك لأن عملية البناء تتضمن فقط الملفات الضرورية. كما أنه يساعد في الحفاظ على خصوصية الملفات وتجنب كشف المفاتيح السرية أو كلمات المرور.
ملف .dockerignore هو ملف تقوم بإنشائه في نفس المجلد مثل ملف Dockerfile الخاص بك. إنه ملف نصي، يشبه إلى حد كبير ملف .gitignore، الذي يحتوي على أسماء أي ملفات لا تريد تضمينها في عملية الإنشاء.
هنا مثال:
8. استخدم مبدأ المستخدم الأقل امتيازًا
افتراضيًا، يستخدم Docker المستخدم الجذر كمسؤول للحصول على إذن لتشغيل الأوامر، لكن هذه ممارسة سيئة. إذا كانت هناك ثغرة أمنية في إحدى الحاويات، فيمكن للمتسللين الوصول إلى مضيف Docker.
لتجنب هذا السيناريو، قم بإنشاء مستخدم ومجموعة مخصصة. يمكنك تعيين الأذونات المطلوبة للمجموعة لحماية المعلومات الحساسة. إذا تم اختراق أحد المستخدمين، فيمكنك حذفه دون الكشف عن المشروع بأكمله.
فيما يلي مثال يوضح كيفية إنشاء مستخدم وتعيين أذوناته:
تحتوي بعض الصور الأساسية على مستخدمين زائفين تم إنشاؤها فيها. يمكنك استخدام المستخدمين المثبتين بدلاً من أذونات المستخدم الجذر.
لماذا يجب عليك اعتماد أفضل ممارسات Docker؟
تعد أفضل الممارسات طريقة رائعة لتقليل الثغرات الأمنية وكتابة تعليمات برمجية أكثر وضوحًا. هناك العديد من أفضل الممارسات التي يمكنك تطبيقها على كل ميزة تستخدمها في Docker.
المشروع المنظم جيدًا يجعل المزامنة أسهل مع أدوات التنسيق الأخرى مثل Kubernetes. يمكنك البدء بتلك الموضحة في المقالة واعتماد المزيد منها عندما تتعلم Docker.