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

ما Docker؟ شرح للمبتدئين وتشغيل أول حاوية

geekadmin••8 دقائق قراءة
مقدمة Docker بالعربية: تشغيل التطبيقات داخل الحاويات

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

في هذا الدرس من سلسلة Geek4Arab، ستفهم معنى الحاوية والفرق بينها وبين الآلة الافتراضية، ثم تتعرف على خطوات تشغيل خادم Nginx محليًا. لا تحتاج إلى معرفة سابقة بالحاويات؛ يكفي أن تعرف فتح الطرفية ونسخ أمر إليها.

مقدمة سلسلة Docker بالعربية: من صورة التطبيق إلى الحاوية

لماذا نحتاج إلى Docker؟

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

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

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

ما الحاوية؟ وما صورة Docker؟

الحاوية Container بيئة لتشغيل عملية أو مجموعة عمليات مع عزل للملفات والشبكة والموارد وفق إعداداتها. أما الصورة Image فهي القالب الذي يحتوي الملفات اللازمة لإنشاء تلك البيئة.

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

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

المصطلح معناه مثال في هذا الدرس
Image قالب لإنشاء الحاويات صورة nginx:stable
Container نسخة منشأة من الصورة يمكن تشغيلها وإيقافها حاوية باسم g4a-nginx
Docker Engine المكونات التي تدير الصور والحاويات المحرك الذي ينفذ أمر التشغيل
Registry مستودع لتخزين الصور وتوزيعها Docker Hub
Dockerfile ملف تعليمات لبناء صورة نكتبه لاحقًا لتطبيق خاص بنا

مسار تشغيل Docker: مستودع الصور ثم صورة محلية ثم حاوية قيد التشغيل

ما الفرق بين Docker والآلة الافتراضية؟

تملك الآلة الافتراضية VM نظام تشغيل ضيفًا ونواة خاصة به. أما حاويات Linux التي تعمل على محرك Linux واحد فتشترك في نواة بيئة التشغيل، مع عزل عملياتها وملفاتها وفق إعداداتها.

لذلك لا تحتاج كل حاوية إلى إقلاع نظام تشغيل كامل. يقل الحمل الإضافي عادة مقارنة بآلة افتراضية مستقلة لكل تطبيق، لكن استهلاك التطبيق نفسه للذاكرة والمعالج يبقى قائمًا. لا توجد نسبة توفير ثابتة تنطبق على كل المشاريع.

على Windows وmacOS، تعمل حاويات Linux في Docker Desktop من خلال بيئة Linux وسيطة، مثل WSL 2 أو آلة افتراضية بحسب النظام والإعداد. لا يعني اشتراك الحاويات في النواة أن حاوية Linux تعمل مباشرة على نواة Windows.

مقارنة طبقات التشغيل بين الآلات الافتراضية وحاويات Linux

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

العزل يحتاج إلى إعداد صحيح، ولا يجعل تشغيل أي صورة مجهولة آمنًا. للمقارنة الأساسية، راجع شرح الحاويات والآلات الافتراضية.

ماذا تحتاج قبل تشغيل أول حاوية؟

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

على جهازك الشخصي، يمكنك اتباع دليل تثبيت Docker المناسب لنظامك. إذا كنت تستخدم Windows، راجع متطلبات Docker Desktop على Windows قبل التثبيت. وعلى خادم Linux، اتبع تعليمات Docker Engine للتوزيعة.

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

docker version

ابحث في النتيجة عن قسمين: Client وServer. إذا ظهر العميل مع رسالة تعذر الاتصال بالمحرك، فابدأ بحل الاتصال قبل تجربة أوامر تشغيل الحاويات.

كيف تشغّل خادم Nginx باستخدام Docker؟

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

1. أنشئ الحاوية وشغّلها

نفّذ الأمر التالي في سطر واحد:

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

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

الجزء وظيفته
docker run إنشاء حاوية جديدة وتشغيلها
--name g4a-nginx اختيار اسم يسهل استخدامه في الأوامر التالية
-d تشغيل الحاوية في الخلفية
-p 127.0.0.1:8080:80 ربط المنفذ المحلي 8080 بمنفذ الحاوية 80
nginx:stable اختيار صورة Nginx ذات الوسم stable

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

2. تحقق من حالة الحاوية

docker ps

ابحث عن الاسم g4a-nginx وحالة تبدأ بـUp. من المتوقع أن ترى أيضًا ربطًا يشبه 127.0.0.1:8080->80/tcp. تختلف معرفات الحاويات والتوقيتات بحسب جهازك.

3. افتح الصفحة في المتصفح

اكتب العنوان http://127.0.0.1:8080 في المتصفح. النتيجة المتوقعة هي صفحة الترحيب الافتراضية لـNginx. ظهورها يوضح أن الحاوية تعمل وأن ربط المنفذ يسمح للمتصفح بالوصول إلى الخدمة.

4. اقرأ السجلات ثم جرّب الإيقاف وإعادة التشغيل

docker logs g4a-nginx
docker stop g4a-nginx
docker ps -a
docker start g4a-nginx

نفّذ الأوامر بالترتيب. يعرض logs مخرجات الخدمة، ويوقف stop الحاوية. يعرض ps -a الحاويات المتوقفة أيضًا، ثم يعيد start تشغيل الحاوية الموجودة دون إنشاء نسخة جديدة.

إذا انتهيت من التجربة، يمكنك إيقاف الحاوية وحذفها بالاسم المحدد:

docker stop g4a-nginx
docker rm g4a-nginx

يحذف الأمر الأخير حاوية التجربة وطبقة الكتابة الخاصة بها، وتبقى الصورة المحلية. لا تستخدم الحاوية وحدها لحفظ ملفات مهمة؛ سنشرح التخزين الدائم باستخدام Volumes في درس لاحق.

لماذا قد يفشل المثال؟

ابدأ برسالة الخطأ بدل إعادة أمر التشغيل مرات متتالية. تحدد الرسالة غالبًا إن كانت المشكلة في المحرك أو الاسم أو المنفذ أو تنزيل الصورة.

المشكلة ما الذي تفحصه؟
تعذر الاتصال بـDocker daemon تحقق من تشغيل المحرك واتصال العميل به
الاسم g4a-nginx مستخدم نفّذ docker ps -a؛ ربما أنشأت الحاوية مسبقًا. استخدم docker start g4a-nginx لتشغيل الموجودة
المنفذ 8080 مستخدم اختر 8081 في أمر إنشاء حاوية جديدة، وافتح 8081 في المتصفح
الحاوية تتوقف مباشرة اقرأ docker logs g4a-nginx وحالتها في docker ps -a
تعذر تنزيل الصورة افحص الإنترنت وإعدادات proxy ورسالة المستودع

إذا ظهرت مشكلة صلاحيات على Linux، راجع دليل التثبيت لتوزيعتك. لا تمنح صلاحيات واسعة لملفات Docker عشوائيًا لمجرد تجاوز الرسالة.

متى يكون Docker مفيدًا لمشروعك؟

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

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

أسئلة شائعة عن Docker للمبتدئين

هل Docker لغة برمجة؟

لا. Docker أدوات لتجهيز التطبيقات وتشغيلها. يمكن استخدامه مع تطبيقات مكتوبة بلغات مختلفة، ومنها PHP وJava وPython.

هل يمكن تشغيل أكثر من حاوية من الصورة نفسها؟

نعم. يمكنك إنشاء حاويات متعددة من صورة واحدة، مع أسماء وإعدادات مختلفة. عند نشر منافذها على عنوان الجهاز نفسه، تحتاج إلى منافذ مضيف لا تتعارض.

هل إيقاف الحاوية يحذف ملفاتها؟

الإيقاف وحده لا يحذف طبقة الكتابة الخاصة بالحاوية. حذف الحاوية يزيل تلك الطبقة؛ ويمكن حفظ البيانات المطلوبة خارجها باستخدام تخزين دائم.

هل Docker يغني عن نظام التشغيل؟

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

هل الأمثلة هنا جاهزة للإنتاج؟

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

تمرينك قبل الدرس التالي

شغّل حاوية Nginx، وافتح صفحتها، ثم أوقفها وراقب تغير حالتها في docker ps -a. أعد تشغيلها باستخدام docker start، واشرح بكلماتك الفرق بين الصورة والحاوية والمنفذ المنشور.

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

geekadmin

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

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