[ 🎊 بمناسبة الذكرى السنوية 🎊 ]⇥درس كامل للمبتدئين [ 🐋 Dockerآخر
الصفحة
د عبد الرحمن

  • المشاركات: 15578
    نقاط التميز: 11413
عضو في لجنة تطوير برنامج المنتديات
مشرف سابق
د عبد الرحمن

عضو في لجنة تطوير برنامج المنتديات
مشرف سابق
المشاركات: 15578
نقاط التميز: 11413
معدل المشاركات يوميا: 3
الأيام منذ الإنضمام: 5201
  • 01:01 - 2024/07/28

السلام عليكم ورحمة الله وبركاته،،

بسم الله الرحمن الرحيم،،

اللهم صل على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد،

اللهم بارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد،،

وبعد، مبادرة متواضع في سبيل الله،، وسعيا لتبادل الخبرات،،

أضع بين أيديكم درس كامل للمبتدئين بخصوص محرك Docker والذي أصبح له دور هام وكبير في عالم الشبكات، خصوصا عندما يتعلق الأمر

بتخصص الـDEVOPS والمبرمجين عامتا،، هذا الدرس عبارة عن هدية للمنتدى بمناسبة الذكرى العشرين لتأسيس منتدى مشاكل الحاسب والشبكات،،

الذكرى السنوية العشرين لتأسيس منتدى مشاكل الحاسب والشبكات

محرك Docker :

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

اعتمد المطورين على نموذج الحاويات Containers، بحيث توفر لك هذه الخدمة بتشغيل التطبيق وعزله عن بقية التطبيقات دون المساس بالبنية التحتية للتطبيق عامتا،،

من خلال هذه المنهجية وفر هذا المحرك بيئة ملائمة للمطورين بحيث يمكنهم العمل في بيئة واحدة محلية مع حاويات مختلفة لتجريب التطويرات المختلفة ومواصلة دورة التطوير، دون التسبب

في خلل أو … على مستوى البنية التحتية عامتا،، أي إن حدث وقام أحد المبرمجين باضافة برمجة خاطئة في الحاوية، فهذا لن يؤثر على بيئة العمل ولن يمس البنية التحتية للنظام،،

وبهذا خفف على المطور مشكل خطأ بسيط قد يوقف عمل النظام بشكل عام … الخ،،

لكن ما علاقة كل هذا بالشبكات ؟

المحرك بحد ذاته يمكن استعماله في جهاز واحد، أو إعتماده في شبكة محلية أو عامة لتوفير التطبيق البرمجي الملائم للمستخدم،،

أي أن هذا المحرك يسهل على المطورين التواصل فيما بينهم عن طريق استعمال النوافذ والخدمات الملائمة عبر الشبكة في السيرفر العام.

اي بعبارة أخرى : بدل أن يقوم مشرف الشبكة بانشاء سيرفر، وتنصيب النظام العام في السيرفر، وفتح لكل مطور عضوية في السيرفر، واعطاءه مجموعة من التصريحات ليستطيع تطوير النظام،،

والعمل دائما على انشاء صورة حية كنظام احتياط في كل دقيقة أو ساعة أو … يعتمد تقنية هذا المحرك ويوفر على نفسه العديد من الخطوات في محرك واحد آمن إلى حد ما.

ومن أجمل ما تقدمه الحاويات: القدر على نقل الحاوية من مطور إلى آخر، أين توفر لهم بيئة مميزة لا يحتاج فيها المطور لتنصيب كل البرامج الأساسية المطلوبة لتشغيل التطبيق أو البرنامج،،

هيكل المحرك Docker :

يعتمد محرك Docker على نظام الخادم والزبون أي Client-Server .

يتصل الزبون بالخادم عن طريق نظام الخدمات Docker-daemon، الذي يمكن اعتبار أنه قلب الوظيف جمعاء، حيث يقوم بأغلب العمليات كـبناء، تشغيل، تعديل، نقل، حاوية … الخ،

وبما أنه يعتمد على نظام الخادم والزبون، فإنه في ذاته يوفر لك القدرة على التعامل مع الحاويات محليا أو عن طريق الاتصال بخادم في مكان مغاير عبر الانترنت أو الشبكة المحلية،،

أقصد هنا يمكن استعمال الحاويات مباشرة في حاسوبك، أو الاتصال بخادم وفره مسؤول الشبكات،،

من جماليات طريقة الاتصال بين الخادم والزبون، الاعتماد على نظام REST API ،، وهذا نظام يوفر تواصل خفيف ورسائل جد بسيطة بين الطرفين لتسهيل وتسريع العمليات فيما بينهما،،

نظام الخدمات Docker Daemon:

dockerd، يبقى في حالة التنصت بانتظار طلبات الخدمات أو أوامر تنفيذية من طرف الزبون،، مع العلم يمكن للخادم توفير خدمة التواصل مع خوادم أخرى، مثلا الاتصال بخادم رئيسي

في الخادم المركزي للشركة أو ….الخ

نظام الزبون docker:

docker ، هو الطريقة الأولية لتعامل مع المحرك عامتا، فمثلا يمكن استعمال الأمر: docker run ،، لتشغيل حاوية معينة

سجلات docker:

يقوم نظام السجلات بتخزين الصور اي docker image، وفي هذه الحال يوجد نوعين:

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

الذي يقوم المطور باعداده فيه حاسوبه محليا،،

وهنا يأتي دور كل من pull و push التي بدورها تعني:

docker pull: هو عبارة عن أمر يقوم بجلب الصورة المطلوبة من أجل توفيرها للتشغيل،،

docker push: هو عبارة عن أمر لارسال الصورة المحلية الى المركز المعني،،

يتصل هذان الأمران مع السجل الذي يتم اعداده في البداية من طرف المسؤول أو المبرمج،،

الحاويات Containers:

هي عبارة عن صورة قابلة للتشغيل،، وتوفر خاصية التشغيل في شبكة واحدة أو شبكات مختلفة،،

ويتم انشاءها من خلال الاستعانة بالصورة مع اضافة بعض العناوين مثل نافذة الحاوية أو نوافذ الحاوية أو شبكة أو شبكات الحاوية،،

وجميلها انها منفصلة تماما على بقية الحاويات والجهاز بذاته، أي أن العطل الذي قد يقع سيحدث في الحاوية فقط دون التأثير على النظام أو ….

الصور Images:

هي عبارة عن قالب للقراءة فقط أي Template تحتوي مجموعة من التعليمات لإنشاء حاوية، وفي معظم الأوقات تكون صور مبنية على صور أخرى،،

فمثلا يمكن للصورة أن تكون عبارة عن توزيعة Debian تم تنصيب عليها خادم ويب كـApache ومستلزماته مثلا كـPhpmyadmin و Mysql و PHP، وتتوفر على تطبيقك مباشرة،،

وفي هذه الحال عند استعمال الصورة من طرف شخص آخر أو في جهاز آخر، اعادة تنصيب جميع الأدوات و…. غير مطلوب لأن الصورة توفر كل شيء،، حتى أنها تحذف مشكل اختلاف الاصدارات

بين المطورين وحتى المستخدمين النهائيين لأنها مبنية على بيئة التطوير الأولى التي يعمل فيها التطبيق بشكل ممتاز،،

ولبناء هذه الصور تحتاج لتحضير ملف Dockerfile يحتوي على جميع الأوامر اللازمة بشكل مبسط لانشاء الصورة،، أو يمكنك تعديل ملف محضر مسبقا حسب احتياجاتك،،

لتثبيت المحرك عليك أولا بالتوجه للموقع الرسمي،

إما تحميل برنامج التثبيت الخاصة بالـWindows مباشرة أو اتباع معي الخطوات التالية لتثبيت في Linux

طريقة التثبيت على توزيعة Linux :

أولا تبدأ بربط النظام مع خادم الرسمي لـdocker :

sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

sudo chmod a+r /etc/apt/keyrings/docker.asc

ثم يتوجب عليك اضافة المخزن للنظام، مع عمل تحديث للنظام لكي يتم استعمال خادم Docker في تثبيت تطبيقات تابعة له مستقبلا:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo

"$VERSION_CODENAME") stable" |

sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update

ملاحظة: في حالة استعمال توزيعات مستخرجة من توزيعة UBUNTU غير $VERSION بـ $UBUNTU

الآن عليك بتطبيق أمر التثبيت:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

ثم تقوم بتجريب بسيط، مثلا استعمال خادم nginx لتصفح الويب مثلا كالآتي:

للعلم هنا سيقوم محرك docker بتصفح المخزن العام من الموقع الرسمي وتحميل صورة nginx،

ثم بعد التحميل يقوم بتشغيلها مرفوقة بإسم : web وفي منفذ 8080

وتكون النتيجة ان شاء الله:

هذا والحمد لله رب العالمين على التوفيق،،

السلام عليكم،،

عبد الله،،

01:04 - 2024/07/28: آخر تغيير للنص بواسطة د عبدالله
عدد مرات تغيير النص: 2

3📊0👍0👏1👌0🔌
Mouad معاذ

  • المشاركات: 7544
    نقاط التميز: 6004
مشرف سابق
Mouad معاذ

مشرف سابق
المشاركات: 7544
نقاط التميز: 6004
معدل المشاركات يوميا: 2
الأيام منذ الإنضمام: 3780
  • 01:38 - 2024/07/28
السلام عليكم ورحمه الله ..

بارك الله فيك اخي عبد الله على هدا الدرس المميز

بمناسبة الذكرى السنوية للمنتدى ..

الموضووع ان شاء الله لن يدهب الى الأرشيف سيبقى من اجل ان يكون مرجع لمن يحب هدا المجال ان شاء الله للاستفادة منه ..

تحياتي لك ..

5📊0👍1👏1👌0🔌
د عبد الرحمن

  • المشاركات: 15578
    نقاط التميز: 11413
عضو في لجنة تطوير برنامج المنتديات
مشرف سابق
د عبد الرحمن

عضو في لجنة تطوير برنامج المنتديات
مشرف سابق
المشاركات: 15578
نقاط التميز: 11413
معدل المشاركات يوميا: 3
الأيام منذ الإنضمام: 5201
  • 01:46 - 2024/07/28
وعليكم السلام و رحمة الله و بركاته،،

بورك فيك اخي معاذ،،

مع الاسف بعض الاجزاء بنسبة للمبتدئين من اختصاص منتدى البرمجة ولم يكن بوسعي وضعها لتكميل الموضوع،،

لكنه ان شاء الله يبقى همزة وصل بين المنتدى ومنتدى البرمجة في تخصص الDevOps

يومكم مبارك ،،

إقتباس لمشاركة: @Mouad معاذ 23:38 - 2024/7/27

السلام عليكم ورحمه الله ..

بارك الله فيك اخي عبد الله على هدا الدرس المميز

بمناسبة الذكرى السنوية للمنتدى ..

الموضووع ان شاء الله لن يدهب الى الأرشيف سيبقى من اجل ان يكون مرجع لمن يحب هدا المجال ان شاء الله للاستفادة منه ..

تحياتي لك ..

3📊0👍0👏1👌0🔌
حاتم Hatim

  • المشاركات:
    44502
نائب مراقب الكمبيوتر
حاتم Hatim
نائب مراقب الكمبيوتر
المشاركات: 44502
معدل المشاركات يوميا: 7
الأيام منذ الإنضمام: 6331
  • 01:48 - 2024/07/28
السلام عليكم ورحمة الله وبركاته

بارك الله فيك اخي، على الموضوع و الدرس المميز ،

ان شاء الله تعم الفائدة على الجميع ،

تحياتي.

3📊0👍0👏1👌0🔌
د عبد الرحمن

  • المشاركات: 15578
    نقاط التميز: 11413
عضو في لجنة تطوير برنامج المنتديات
مشرف سابق
د عبد الرحمن

عضو في لجنة تطوير برنامج المنتديات
مشرف سابق
المشاركات: 15578
نقاط التميز: 11413
معدل المشاركات يوميا: 3
الأيام منذ الإنضمام: 5201
  • 02:14 - 2024/07/28
وعليكم السلام،،

إن شاء الله، بورك فيك،،

يومكم مبارك،،

إقتباس لمشاركة: @حاتم Hatim 23:48 - 2024/07/27

السلام عليكم ورحمة الله وبركاته

بارك الله فيك اخي، على الموضوع و الدرس المميز ،

ان شاء الله تعم الفائدة على الجميع ،

تحياتي.

0📊0👍0👏0👌0🔌
taoufik33

  • المشاركات:
    67610
مشرف مشاكل وإستفسارات الجوال
مشرف مشاكل الحاسب والشبكات
مشرف عالم الإنترنت ومشاكله
مشرف مشاكل الألعاب واستفساراتها
مشرف عالم التجارة الإلكترونية
محرر بمجلة مستقبل الهواتف الذكية
taoufik33

مشرف مشاكل وإستفسارات الجوال
مشرف مشاكل الحاسب والشبكات
مشرف عالم الإنترنت ومشاكله
مشرف مشاكل الألعاب واستفساراتها
مشرف عالم التجارة الإلكترونية
محرر بمجلة مستقبل الهواتف الذكية
المشاركات: 67610
معدل المشاركات يوميا: 10.4
الأيام منذ الإنضمام: 6502
  • 03:15 - 2024/07/28
السلام عليكم ورحمة الله وبركاته، أخي عبدالله.
بارك الله فيك على تقديم هذا الدرس الشامل والمفيد حول Docker، وخاصة بمناسبة الذكرى السنوية.
مجهودك الرائع في تبسيط المفاهيم للمبتدئين يستحق كل التقدير.
هذه المساهمة ستفيد الكثير من الأعضاء الذين يتطلعون لفهم Docker بشكل أفضل.
جزاك الله خيراً على جهودك ونتطلع إلى المزيد من مشاركاتك المميزة.
3📊0👍0👏1👌0🔌
The NoToRiOuS24
  • المشاركات: 828
    نقاط التميز: 1895
عضو نشط
The NoToRiOuS24
عضو نشط
المشاركات: 828
نقاط التميز: 1895
معدل المشاركات يوميا: 0.5
الأيام منذ الإنضمام: 1751
  • 20:58 - 2024/07/28
السلام عليكم ورحمة الله تعالى وبركاته
جزاك الله خيرا أخي عبد الله على الدرس المميز و الذي سيفيدنا بدون شك
خاصة و أنه جاء بمناسبة الذكرى السنوية
جزاك الله خيرا ووفقك
3📊0👍0👏1👌0🔌

الرد على المواضيع متوفر للأعضاء فقط.

الرجاء الدخول بعضويتك أو التسجيل بعضوية جديدة.

  • إسم العضوية: 
  • الكلمة السرية: 

 [ 🎊 بمناسبة الذكرى السنوية 🎊 ]⇥درس كامل للمبتدئين [ 🐋 Dockerبداية
الصفحة