ما هو Docker
نرى كل يوم العديد من البرمجيات التي تظهر والتي تسعى لتساعد المبرمجين على بناء البرمجيات القوية ذات الأداء العالي، لكن لعلّ أفضل ما ظهر منذ سنوات ال Docker، فما هو تعريف الأدق لل Docker.
لابد لكل المسؤولين عن الخوادم والمبرمجين المحترفين ومهندسي البرمجيات من التعرف على Docker، خصوصاً كونه يعالج ثلاث مشاكل يواجها المطورون ومدراء خواديم، والتي هي:
- جحيم التبعية the dependecy hell.
- صعوبة نشر، ونقل مشاريع الويب.
- التطوير، التسليم والزرع المتواصل للمشاريع continuous delivery/integration.
ماذا يعني Docker ؟
يعد Docker أداة ترتكز بعملها على أحدث إصدار من نواة لينوكس Linux التي تعمل على عزل الأوامر(المهام) والعمليات التخزين والإدخال والإخراج والتحكم بإمكانية إنشاء الحاويات containers والتي يعتمد عليها العديد من الشركات والمهندسين المحترفين كونها تعمل على تغليف مشروع ما على سبيل المثال تطبيق ويب وذلك للقيام بعمليات الاختبارات أو اسباب برمجية أخرى، التوزيعة المناسبة هي أما Ubuntu أو Fedora.
ما هو الاستخدام الرئيسي لـ Docker؟
- تجريب المشروع البرمجي على أبينتو فهو يتكفل في إنشاء نسخة من توزيعة Ubuntu.
- مثال أخر لدي نظام أو موقع ويب يعمل على إصدار معين من البايثون وأرغب بتجربة إصدار جديد أو قديم، لذا يتولى هذه المهم دوكر.
- اريد إضافة إطار عمل أو مكتب على سبيل المثال Flask أو Django ومكتبة Numpy فيقوم الدوكر بانشائهم في المشروع من خلال تعلميات معينة من مدير الحزم الخاصة بي Ubuntu.
- مشروعي يحتاج لي قاعدة بيانات مثلاً MySQL، فيعمل الدوكر على تنصيبها وإيضا من خلال مدير حزم أبينتو.
يعمل على جمع كل ما سبق أو أنت يمكنك إضافة ما هو مناسب لمشروعك، ثم تشغيل خادم أو حتى الحاسوب عبر تعليمت:
docker run my_image
الخطوات السابقة يمكنك تنظيمها ضمن ملف واحد على سبيل المثال DockerFile، وكل سطر أنت تأمر دوكر بمهمة معينة، التعليمات المناسبة لفقرة الاستخدامات السابقة:
- FROM ubuntu (رقم النسخة) اختر احدث نسخة والتي ليست في طور التجريب.
- Install Python، يمكنك هنا تحديد الإصدار
- RUN apt-get install -y python-dev
- Install pip من أجل تنزيل الحزمة والمكتبات في بايثون.
- RUN apt-get install -y python-pip
- # Install requirements.txt
- ADD requirements.txt /src/requirements.txt
- RUN cd /src; pip install -r requirements.txt
- # Add the Flask App
- ADD . /src
- # EXPOSE PORT
- EXPOSE 80
- # Run the Flask APP
- CMD python src/app.py
كيفية تشغيل حاوية Docker موجودة؟
يمكنك تشغيل الملف السابق من خلال التعليم التالية:
docker build -t <your username>/my-flask-app
أحب أن اذكرك أننا نعطي مجرد مثال،ويمكن أن يكون اسم مشروعك غير الاسم المقترح لذا ل تقلق فقط استبدل الاسم حتى يتناسب مع مشروعك المستقل.
ما هو ال container في البرمجة؟
يعتبر مفهوم الحاويات عبارة عن طبيقة تعمل على تغليف يضم العديد من التعليمات لكي يتم مراقبة سير عميلة واحدة أو حتى حزمة من التعليمات processes وهي قريبة لفكرة sandboxing، ظهر هذا المفهوم أول مرة في سنة 2007م من خلال مهدسين يعملون في شركة البرمجيات جوجل وذلك في مشروع cgroups وتم دمج ضمنه نواة لينكس Linux وهو يعتبر الخطوة الأولى في عالم Containers.
الفرق بين الحاوية والكونتينر
لا يوجد فرق إلا أن كونتير Containers هو المرادف لكلمة الحاوية في لغة الإنجليزية، وقد يعتبر Containers عبارة عن بلوك أو مكان ذو حجم يمكنك تخصيصها وأكثر مثال دقيق على ذلك div في الويب وتحديداً html فهو يعتبر حاوي إذ يتم وضع مجموع من التعليمات أو المحتوى في داخله، كما يوجد ويجيت كونتينر في فلاتر ويستخدم في تخزين البيانات ويعد بمثابة صندوقأ أما هنا عند استخدام Docker فيعتبر Containers أداة من أجل تجربة التطبيق البرمجي على العديد من أنظمة التشغيل من دون تكلفات.