التجاوز إلى المحتوى
معرفة تقنية، بلغة عربية واضحة.GEEK4ARAB / مساحة للأفكار التي تصنع المستقبل
المدرسة العربية للبرمجةجيك للعرب · أخبار، معرفة، وتجربة
ادارة السيرفرات

بنية Docker: كيف تتعاون مكوّناته لتشغيل التطبيقات؟

geekadmin••6 دقائق قراءة
بنية Docker: كيف تتعاون مكوّناته لتشغيل التطبيقات؟ — رسم توضيحي تعليمي
بنية Docker: كيف تتعاون مكوّناته لتشغيل التطبيقات؟ — رسم توضيحي تعليمي
رسم تعليمي من إعداد Geek4Arab — الدرس 2.

بنية Docker هي العلاقة بين الأدوات التي تستقبل أوامرك والخدمات التي تبني الصور وتشغّل الحاويات. فهم هذه العلاقة يساعدك على تحديد سبب المشكلة: هل المحرك متوقف، أم الصورة غير متاحة، أم التطبيق نفسه تعطل؟ في هذا الدرس من سلسلة Geek4Arab ستتتبع الطلب منذ كتابة الأمر حتى بدء التطبيق.

إذا كانت هذه تجربتك الأولى، ابدأ من شرح Docker للمبتدئين وتشغيل أول حاوية. تحتاج هنا إلى تثبيت Docker وتشغيل بيئته، ولا تحتاج إلى مشروع برمجي جاهز. الأوامر تمارين محلية، والمخرجات الموضحة وصف لما يُتوقع رؤيته وليست نتائج تنفيذ على جهازك.

ما المكوّنات الرئيسية في بنية Docker؟

تتكون الصورة العامة من عميل يرسل طلبًا، ومحرك يدير الموارد، ومستودع يوفّر الصور. يعمل العميل والمحرك على الجهاز نفسه عادةً في تجربة المبتدئ، لكن يمكن للعميل الاتصال ببيئة أخرى.

المكوّن وظيفته مثال عملي
Docker CLI استقبال الأوامر وإرسال الطلبات كتابة docker ps
Docker daemon إدارة موارد Docker إنشاء الحاوية والشبكة
Image محتوى جاهز لإنشاء الحاوية صورة خادم Nginx
Container بيئة لتشغيل عملية التطبيق خادم ويب يعمل الآن
Registry حفظ الصور وتوزيعها Docker Hub

لا يمثل Docker Hub محركًا يعمل على جهازك. إنه مستودع قد تنزّل منه صورة، بينما تتولى بيئة Docker المحلية إنشاء الحاوية وتشغيلها. ويمكن استخدام مستودعات خاصة داخل المؤسسات بدلًا منه.

ما الفرق بين العميل والمحرك؟

العميل هو الواجهة التي تستخدمها، والمحرك هو الجهة التي تنفّذ الطلب. وجود برنامج الأوامر على جهازك لا يثبت أن الخدمة التي يحتاج إليها تعمل.

اكتب الأمر التالي:

docker version

عندما ينجح الاتصال، يعرض معلومات عن Client وServer. ظهور بيانات العميل مع رسالة تعذر الاتصال بالمحرك يوجّهك إلى خدمة Docker أو سياق الاتصال. لا تبدأ حينها بإعادة تنزيل صور التطبيقات؛ فالطلب لم يصل بعد إلى الجهة التي تديرها.

يستخدم العميل واجهة Docker API. في تثبيت Linux المعتاد يكون الاتصال عبر مقبس محلي، وقد تختلف وسيلة الاتصال في Docker Desktop أو في سياق بعيد. لا تحتاج في هذه المرحلة إلى فتح واجهة الإدارة على الإنترنت كي تستخدم الأوامر المحلية.

ماذا يحدث عند تنفيذ docker run؟

ينشئ docker run حاوية جديدة ويشغّلها بناءً على الصورة والخيارات التي حددتها. وإذا لم تتوفر الصورة محليًا، يحاول تنزيلها وفق سياسة السحب المستخدمة.

docker run --name g4a-architecture -d -p 127.0.0.1:8082:80 nginx:stable

اقرأ الأمر كطلب له أجزاء واضحة. الاسم يسهّل الرجوع إلى الحاوية، والخيار -d يتركها تعمل في الخلفية. ربط المنفذ يجعل منفذ 8082 المحلي يصل إلى منفذ 80 داخل الحاوية. أما nginx:stable فيحدد المستودع والوسم المراد استخدامهما.

تخيّل الرحلة في خمس مراحل: يستقبل العميل الأمر؛ يتحقق المحرك من الصورة؛ تُجهّز الحاوية بإعدادات التخزين والشبكة؛ تبدأ عملية Nginx؛ ثم يعيد العميل معرّف الحاوية. نجاح إنشاء الحاوية لا يضمن بقاء التطبيق عاملًا، لذلك افحصه بعد الإنشاء.

docker ps -a
docker logs g4a-architecture
docker port g4a-architecture

يفيد الأمر الأول في معرفة الحالة حتى لو توقف التطبيق. ويعرض الثاني السجلات التي يرسلها التطبيق إلى المخارج القياسية. ويكشف الثالث إعداد ربط المنافذ. افتح بعد ذلك http://localhost:8082 في متصفح الجهاز نفسه إذا كانت الحاوية تعمل.

أين تدخل containerd وrunc في الصورة؟

توجد مكوّنات أعمق لإدارة تشغيل الحاويات، من بينها containerd وrunc في بيئات Linux الشائعة. تساعد هذه المكوّنات على إدارة دورة التشغيل وإنشاء العمليات المعزولة وفق مواصفات الحاويات.

لا تحتاج إلى تشغيل كل مكوّن يدويًا لتنفيذ التمرين. الفصل بين الواجهة وإدارة الموارد والتشغيل يشرح لماذا لا يساوي Docker مجرد أمر واحد. كما يشرح أن فهم CLI لا يغني وحده عن فهم الشبكة ونظام الملفات والتطبيق.

تستخدم حاويات Linux نواة Linux في بيئة التشغيل. وعند استخدام Docker Desktop على نظام آخر، يمكن أن تكون هذه البيئة داخل آلة افتراضية أو WSL 2. لذلك لا تتوقع أن يعمل أي برنامج لأي نظام تشغيل داخل أي صورة بمجرد نسخه إليها.

كيف تعرف البيئة التي تتصل بها؟

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

docker context ls
docker context show
docker info

يشير السياق النشط إلى البيئة التي تتلقى الأوامر. ويعرض docker info معلومات إضافية عن المحرك وموارده وإعداداته. اقرأ الرسائل قبل تغيير السياق؛ فالحاويات الموجودة في بيئة لا تظهر تلقائيًا داخل بيئة أخرى.

أخطاء شائعة وطريقة التفكير فيها

إذا ظهرت رسالة Cannot connect to the Docker daemon، تحقق من تشغيل Docker Desktop أو خدمة المحرك ومن السياق الحالي. وإذا ظهرت رسالة رفض سحب الصورة، راجع اسم المستودع والوسم وصلاحيات الحساب عند استخدام صورة خاصة.

أما تعارض المنفذ فيحدث عند حجز المنفذ نفسه على الجهاز. اختر منفذًا محليًا آخر، مثل 8083، مع إبقاء منفذ الحاوية 80. وإذا خرجت الحاوية مباشرة، افحص السجلات وحالة الخروج قبل تغيير إعدادات الشبكة عشوائيًا.

بعد التمرين أوقف الحاوية ثم احذف حاوية التدريب المحددة فقط:

docker stop g4a-architecture
docker rm g4a-architecture

تمرين للمراجعة

اكتب بجوار كل مشكلة المكوّن الذي تبدأ بفحصه: أمر docker غير معروف؛ صورة غير موجودة؛ حاوية متوقفة؛ صفحة لا تستجيب. الإجابات ليست واحدة: الأولى تتعلق بالعميل ومساره، والثانية بالمستودع واسم الصورة، والثالثة بالعملية والسجلات، والرابعة قد تجمع التطبيق والمنافذ.

بفهم بنية Docker تصبح رسائل الخطأ إشارات إلى مرحلة محددة. احتفظ بهذه الخريطة وأنت تنتقل إلى درس الصور والحاويات؛ فهي تمنع الخلط بين تنزيل البرنامج، وإنشاء بيئته، وتشغيله فعليًا.

أسئلة شائعة

هل Docker Hub مطلوب دائمًا؟

لا. يمكنك بناء صورة محليًا أو استخدام مستودع آخر. يلزم الوصول إلى المستودع عند تنزيل صورة غير متاحة محليًا أو تحديثها منه.

هل يمكن أن يعمل العميل وحده؟

يمكن تثبيت العميل دون محرك محلي، لكنه يحتاج إلى الاتصال بمحرك مناسب لتنفيذ أوامر إدارة الحاويات.

هل docker ps يعرض كل الحاويات؟

يعرض الحاويات العاملة افتراضيًا. استخدم docker ps -a لعرض المتوقفة أيضًا.

هل المحرك يشغّل التطبيق بدلًا من نظام التشغيل؟

يدير المحرك الحاويات، لكن عملياتها تعتمد على نواة بيئة التشغيل. العزل لا يلغي الحاجة إلى نظام متوافق.

المصادر والمراجعة التقنية

استُلهم ترتيب موضوعات السلسلة من ملاحظات Narayan Prasad (@code.withnarayan). الشرح العربي والأمثلة والرسوم هنا إعداد مستقل، مع الرجوع إلى الوثائق الرسمية لتصحيح وتوسيع المفاهيم.

geekadmin

مقالات ومعرفة تقنية باللغة العربية.

اترك تعليقاً

قد يهمّك أيضًا