docker containers

كمديري انظمة, مطورين , مبرمجين أو حتى مستخدم عادي دائماً مانصل لنقطة معينة في عملنا لنستوعب اننا نكرر هذه الخطوات كثيرا بين فترة و اخرى!, احيانا اقول هذا الشغل سويته الظهر/العصر/المغرب (المقصد انه في نفس اليوم) ليش اكرره الحين؟ او احيان يحصل خطأ بسيط واعيد كل هذا!

او احياناً ابغى اسوي شيء (غالباً شغلي اخذ نسخ من مطورين قت هب واعدل) لكنه يخبص النظام عندي او ينزل ملفات وبكجات تخرب شغلي وسلبيات كثيرة, احتاج عزل او بيئة ثانية اعمل فيها الشغل, لكل المشكلتين السابقة كنت غالباً استخدم نظام افتراضي او في اخر سنتين استخدم سيرفر الـ nas الي عندي.

حاويات لينكس بشكل عام و دوكر بشكل خاص حلت مشاكل كثيرة و فتحت افكار وحلول ومجالات كثير قاعد استفيد منها كل يوم وبنيت مشروع تخرجي بالكامل عليها -ان شاء الله هالصيف نتخرج (_36 – , حل مشكلة التكرار او ايجاد عزل مناسب شيئين او مشكلتين تقدر تحلها بإستخدام دوكر لكن دوكر يقدم حلول لكثير من الحالات – These are not the best use-cases, docker is bigger than that.

Linux containers

بإختصار وللتسهيل الحاوية هي مثل النظام الافتراضي Virtual machine ولكن خفيف جداً (يحتوي على الملفات الاساسية لتشغيل النظام و يتشارك الكرنال مع النظام الاساسي) لا يستهلك ذاكرة ومعالجة عالية, الحاوية عند تشغيلها لا تستغرق اكثر من ثانية واحدة! نعم ثانية واحدة لذلك لن ازيد في التحدث عن حاويات لينُكس.

docker

منصة تعمل على انشاء الحاويات ( مبنية على حاويات لينُكس LXC) وإدراتها ولها مستودعات فيها الكثير من التطبيقات والبرامج الجاهزة للاستخدام.

عند بناء حاوية نحتاج نحدد النسخة image او البرنامج الي نحتاجه من المستودع او نبني حاوية بدون برامج في نظام كامل معزول تماماً عن جهازك وتسوي الي تحتاجه فيها, وتقدر كمستخدم ترفع تطبيقك او حاويتك للمستودع وتعطيها لأي شخص.< وهذي ميزة وهدلاين كبير لدوكر shipping apps

نظام التشغيل داخل الحاوية هو لينُكس اي انك ما تقدر تشغل الا تطبيقات وبرامج لينُكس, لكن تقدر تنشيء الحاوية على اي نظام تشغيل سواء لينكس نفسه, ماك او ويندوز.

تثبيت docker

على الويندوز والماك هذي الاداة تتكفل بكل شي اما مستخدمي لينكس من هنا

كيف استخدم docker

قبل اي شي هنا التوثيق الرسمي وشرح جميع الاوامر وطريقة الاستخدام, كل الشغل بيكون من خلال سطر الاوامر CMD في الوندوز , Terminal في الماك و لينُكس.

طريقة كتابة اوامر دوكر تبدأ ب docker ثم command طبعاً الـ option و arguments يعتمد على الامر الي تستخدمه.

أهم الاوامر الي نحتاجها

في اوامر كثير ولكن ماراح نستعرضها لانها خارج نطاق شرحنا ونكتفي بالمهم منها والي يخلينا نبدأ مع الحاويات

لعرض الحاويات التي في وضع التشغيل

لعرض جميع الحاويات التي تعمل او التي في وضع ايقاف التشغيل

لعمل حاوية جديدة

لإيقاف حاوية

لتشغيل حاوية

لحذف حاوية

لعرض النسخ

لحذف نسخة

لجلب نسخة من المستودع

لرفع نسخة للمستودع

انشاء حاوية

راح نسوي اول حاوية لنا بتكون عبارة عن نظام ابونتو بدون اي برامج وتقدر تتصفح المستودع من هنا وتسحب الي تحتاجه

نسحب نسخة ubuntu من مستودع دوكر

وبتنفيذ الاتي سنجد جميع النسخ المحفوظة محليا على الجهاز

الان ننشيء الحاوية

الخيار -it يمثل interactive tty بمعنى انه ستكون داخل الحاوية بمجرد انشائها, ويمكن الانشاء في الخلفية باستخدام الخيار -d والخيار -name يمثل اسم الحاوية , هناك الكثير من الخيارات والمتغيرات التي يمكن استخدامها للتحكم اكثر في الحاوية وهنا بعضاً منها

لاضافة اسم للحاوية

لاستخدام وفتح بورت مع الحاوية

لانشاء mount مع الحاوية (باختصار مجلد مشترك بين الحاوية والنظام الاساسي حيث ان اي شي يكون في المجلد ستجده في الحاوية والنظام الحلي)

الان يمكن عرض الحاوية وتفاصيلها

ويهمنا في المخرجات ID, في كل مرة تتعامل مع الحاوية تحتاج الاي دي للتشغيل والايقاف او عملية اخرى

 

ماذا بعد انشاء الحاوية

في امر مهم بعرض استخدامه في هذا الجزء وراح يوضح حل المشكلة التكرار ويكون عندنا high re-usability ونستفيد في المستقبل.

الان مرة اخرى كمطور اعمل كل شغلي في الحاوية وتثبيت البرامج وبرمجتها وعمل الاعدادات وتخصيص النظام حسب احتياج البرامج وكل هذا راح يكون معزول تماماً في حاوية بدون التاثير على النظام الاساسي.

الان اقدر استخرج هذي الحاوية بكل مافيها من اعدادات وتخصيصات بنسخة image بحجم صغير جدا والاحتفاظ بها في الجهاز او رفعها على المستودع الخاص بدوكر او مستودع خاص, مستقبلا انا او اي شخص يقدر يحمل النسخة و تشغيل عدة حاويات منها وبتكون بنفس الاعدادات والتخصيصات كما عملتها اول مرة (_5

طريقة حفظ/استخراج الحاوية كنسخة

ويمكن استخراج حاوية ubuntu الي طبقناها الى image باسم my-new-image مسبقا كالتالي

ولرفع النسخة للمستودع العام ننفذ الاتي

خاتمة

استخدامات الحاويات مفيد جدا في حالة نشر التطبيقات لاكثر من منصة او عمل الاختبارات واكثر ولا يقتصر على ماذكرته في بداية المقال وحتى انه يتم الان استخدامها ك production لبعض التطبيقات والشركات التقنية, هذا الشرح مبسط جداً ومدخل لمنصة دوكر تعمدت عدم الدخول في التفاصيل لتوضيح الفكرة.

ان شاء الله في تطبيق لعمل برنامج rutorrent و راح يكون بديل للشرح اليدوي الي سويته على سيرفر synology وبيختصر كثيييير من الوقت وماراح يكون في command line وتعديل ملفات و بيعطينا ميزة استرجاع البرانامج في اي وقت لو اخترب و و و و و …