كونك مبرمج كايعني انه خاصك تعرف شناهو Docker
و تستعملو لأن خدمتك مكاتقتاصرش غير على إنشاء التطبيقات أو المواقع الإلكترونية, و إنما كاتطلب دراية و معرفة العديد من الأدوات اللي غايساعدوك باش تقاد البنية التحتية اللي غاتحمل داك التطبيق أو الموقع الإلكتروني. لأنك خاصك تضمن الإستمرارية و تتجنب الإنقطاع عن العمل.
Docker
ساهل باش تفهمو و بسيط باش تخدم بيه و ملي غاتفهم شكايدير غاتولي ديما كاتستعملو. فهاد المقال غانشرح Docker
و كذلك الإستعمالات ديالو.
شناهو Docker ؟
باش نفهمو شناهو Docker
خاصنا نفهمو بعض الأمور اللي غاتكون الأساس باش توضح الصورة و نتجنبو الإرتباك و حريق الراس.
1. كيفاش مبني نظام التشغيل operating system :
نظام التشغيل كايتكون من 2 أشياء :
-
Kernel
: هو اللي مكلف بالتواصل مع لHardware
, مثلا التواصل معCarte reseau
او تكتب ولا تقرا من لMemoire
... هادشي كايقوم بيه لKernel
. -
Applications
: اللي هوما التطبيقات اللي كايجيو مع نظام التشغيل, مثلا واجهة التشغيل و باقي البرامج الأخرى.
هادا شرح مبسط و لكن هادشي اللي كايهمنا. المهم , 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 كايحتاج موارد كبيرة باش يخدم بالإضافة أن هاد الطريقة كاتحتاج الوقت بزاف.
دبا من بعد ما فهمنا هادشي غانشوفو شناهو 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
اللي غاتلقاه فهاد الموقع
فاش غاينفعك 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 حيت كاين بزاف مايتقال و مقال واحد غير كافي باش نتطرق لكلشي.