تعريف Docker و شرح بعض إستعمالاته

تعريف Docker و شرح بعض إستعمالاته

2 ماي 2022|3 دقائق قراءة

كونك مبرمج كايعني انه خاصك تعرف شناهو Docker و تستعملو لأن خدمتك مكاتقتاصرش غير على إنشاء التطبيقات أو المواقع الإلكترونية, و إنما كاتطلب دراية و معرفة العديد من الأدوات اللي غايساعدوك باش تقاد البنية التحتية اللي غاتحمل داك التطبيق أو الموقع الإلكتروني. لأنك خاصك تضمن الإستمرارية و تتجنب الإنقطاع عن العمل.

Docker ساهل باش تفهمو و بسيط باش تخدم بيه و ملي غاتفهم شكايدير غاتولي ديما كاتستعملو. فهاد المقال غانشرح Docker و كذلك الإستعمالات ديالو.

شناهو Docker ؟

باش نفهمو شناهو Docker خاصنا نفهمو بعض الأمور اللي غاتكون الأساس باش توضح الصورة و نتجنبو الإرتباك و حريق الراس.

1. كيفاش مبني نظام التشغيل operating system :

نظام التشغيل كايتكون من 2 أشياء :

  • Kernel : هو اللي مكلف بالتواصل مع ل Hardware , مثلا التواصل مع Carte reseau او تكتب ولا تقرا من ل Memoire ... هادشي كايقوم بيه ل Kernel.

  • Applications : اللي هوما التطبيقات اللي كايجيو مع نظام التشغيل, مثلا واجهة التشغيل و باقي البرامج الأخرى.

operating system

هادا شرح مبسط و لكن هادشي اللي كايهمنا. المهم , windows عندها Kernel خاص بها و لكن أنظمة تشغيل أخرى مثل Ubuntu , Centos , Debian , Kali Linux ... اللي كايتسماو أيضا ب Linux distribution. عندهم نفس ل Kernel اللي هو Linux kernel (عقلو على هاد القاضية مزيان غانرجعو ليها من بعد).

2. تثبيت أنظمة تشغيل مختلفة على نفس الجهاز :

كانظن انه فايتليك خدمتي ب VirtualBox ولا Vmware , اللي كايستخدمو ما يسمى بال Hyperviser باش يمكنوك من أنك تثبت Virtual machines اللي كايحملو أنظمة تشغيل مختلفة (windows, ubuntu ...) و كذلك Kernels مختالفين حيت ملي كاتثبت virtual machine بإستخدام VirtualBox ولا Vmware خاصك تستخدم نظام تشغيل كامل مكمول. هنا كايكون نظام التشغيل كبير و كذلك كايستعمل موارد كبيرة حيت ل Kernel كايحتاج موارد كبيرة باش يخدم بالإضافة أن هاد الطريقة كاتحتاج الوقت بزاف.

Hyperviser

دبا من بعد ما فهمنا هادشي غانشوفو شناهو Docker . لكن قبل هادشي خاصنا نتعرفو على بعض المصطلحات.

  • Docker file : مجرد ملف كايحتاوي على أوامر من خلالها كانشؤو Image.

  • Image : اللي هي نظام التشغيل مثلا ubuntu . أو نظام تشغيل زائد برامج و ملفات مثبتة مسبقا عليه. مثلا nodejs أو wordpress أو Mysql .

  • container : اللي بكل بساطة هو virtual machine أو بعبارة أخرى image خدامة.

بإستعمال Docker بإمكانك تثبت العديد من أنظمة التشغيل فنفس الجهاز لكن بطريقة مختالفة بزاف. هاد الإختلاف كايوفر السرعة و البساطة فالتشغيل و كذلك عدم إستنزاف الموارد.

لأنه في Docker مكانستعملوش أنظمة تشغيل كاملة , أنظمة التشغيل (Images) اللي كانستعملو باش نبنيو virtual machines يعني Containers, مكايكونش فيهم ل Kernel لأن docker كايستخدم ل kernel ديال نظام التشغيل الرئيسي.

باش توضح الصورة, نفتارضو عندك حاسوب خدام ب Ubuntu و ثبتي فيه Docker. ملي غاتبغي تثبت containers خاصك تستعمل فقط ل images اللي كايخدمو ب linux kernel اللي هضرنا عليه سابقا. يعني إلى بغيتي تستخدم شي image ديال windows مغاتخدمش. علاش ؟؟ حيت بكل بساطة كيف قلنا قبل, عكس Hyperviser اللي كايستخدم image كاتحتاوي على نظام تشغيل كامل (Kernel زائد Applications) , هاد Docker كايستخدم image كاتحتاوي فقط على ل applications و كايستخدم ل Kernel ديال نظام التشغيل الرئيسي.

ركزو مزيان باش تفهمو. راه الأمر بسيط خاصك فقط تركز شويا.

إلى فهمتي هادشي اللي شرحت ربما غاتسائل واش إلى ستعملت Docker في Windows ما نقدرش نتبث ubuntu ولا أي Linux distribution ؟

الجواب هو فعلا ما تقدرش حيت ل kernel ديال windows مختالف. لكن بإمكانك تثبت linux kernel على windows بإستعمال WSL2 اللي غاتلقاه فهاد الموقع

download wsl2 kernel

فاش غاينفعك Docker ؟؟

تخيل معايا بغيتي تخدم ب Mongodb , بلاصت ما تحملو و ثبتو على الحاسوب ديالك و .... . بإستعمال docker غاتحتاج سطر واحد في Terminal.

docker run -d -p 27017:27017 --name mongodb mongo

و فأي لحظة بإمكانك تحيدها بإستعمال هاد الأمر :

docker stop mongodb

من بعد بغيتي تخدم ب Mysql أو Wordpress أو Nginx أو .... سطر واحد كفيل بأنك تثبت أي حاجة بغيتي.

و كذلك ملي تبغي تنشر الموقع بإمكانك تقاد image فيها البرامج اللي محتاج و ملفات الموقع بإستعمال docker file. وهاكا بإمكانك تشغل الموقع ديالك بسهولة و كذلك بإمكانك تنشئ عدة نسخ منو في نفس server و تستعمل loadbalancer باش تفرق requests بالتساوي.

النهاية :

كانتمنا تكونو فهمتو شناهو docker و عرفتو الإستعمالات ديالو . ديرو فبالكم أن هادشي اللي تطرقت ليه فهاد المقال مجرد تعريف ل Docker حيت كاين بزاف مايتقال و مقال واحد غير كافي باش نتطرق لكلشي.