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

أوامر Docker الأساسية: التشغيل والفحص وحل المشكلات

geekadmin••6 دقائق قراءة
أوامر Docker الأساسية: التشغيل والفحص وحل المشكلات — رسم توضيحي تعليمي
أوامر Docker الأساسية: التشغيل والفحص وحل المشكلات — رسم توضيحي تعليمي
رسم تعليمي من إعداد Geek4Arab — الدرس 5.

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

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

ابدأ بالتأكد من البيئة

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

docker version
docker info
docker context show

يعرض version معلومات النسخ، ويصف info بيئة المحرك، ويحدد context show وجهة الأوامر الحالية. لا تنشر مخرجات التشخيص كاملة قبل مراجعتها؛ فقد تتضمن أسماء أجهزة ومسارات وتفاصيل عن بيئتك.

أوامر الصور: pull وimage ls وbuild

تنزّل pull الصورة، وتعرض image ls الصور المحلية، وتبني build صورة من تعليمات مشروعك. تمثل هذه الأوامر مرحلة تجهيز المحتوى، وهي منفصلة عن بدء حاوية.

docker pull nginx:stable
docker image ls

وعندما يكون لديك Dockerfile داخل مجلد مشروع، يكون البناء مثلًا:

docker build -t my-web:1.0 .

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

أوامر Docker الأساسية لتشغيل الحاويات

ينشئ run حاوية جديدة، بينما يبدأ start حاوية موجودة ومتوقفة. ويوقف stop الحاوية دون حذفها. استخدم أسماء واضحة لتقليل أخطاء التعامل مع المشروع الخطأ.

docker run --name g4a-commands -d -p 127.0.0.1:8086:80 nginx:stable
docker ps
docker ps -a

افتح http://localhost:8086 إذا ظهرت الحاوية عاملة. لا يعرض docker ps الحاويات المتوقفة افتراضيًا، لذلك استخدم -a حين لا تجد الاسم المتوقع. وقد تكون الحاوية أُنشئت ثم خرج التطبيق فورًا، بدل أن يكون أمر الإنشاء فشل بالكامل.

docker stop g4a-commands
docker start g4a-commands

إعادة run بالاسم نفسه لا تعني استئناف الحاوية؛ إنها محاولة إنشاء حاوية جديدة، وقد تفشل بسبب تعارض الاسم. إذا أردت متابعة الحاوية الموجودة استخدم start، وإذا أردت إعدادات جديدة فأعد إنشاءها بعد معالجة بياناتها الدائمة.

كيف تقرأ السجلات؟

يعرض logs ما يرسله التطبيق إلى stdout وstderr. ابدأ بآخر الأسطر لتجنب مخرجات طويلة، ثم استخدم المتابعة عند مراقبة طلب جديد.

docker logs --tail 50 g4a-commands
docker logs --follow --tail 20 g4a-commands

يخرج Ctrl+C من متابعة السجلات دون أن يوقف الحاوية. لا تخلط ذلك مع تشغيل تطبيق في الطرفية مباشرة دون -d. كما أن عدم ظهور سجلات لا يثبت سلامة التطبيق؛ ربما يكتب إلى ملف داخلي أو لم يتلقَّ طلبات بعد.

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

متى تستخدم exec وinspect وport؟

استخدم exec لتنفيذ أمر داخل حاوية عاملة، وinspect لفحص إعدادات الكيان، وport لمعرفة المنافذ المنشورة. لكل أمر سؤال مختلف، ولا يحل أحدها محل الآخر.

docker exec g4a-commands nginx -t
docker port g4a-commands
docker inspect --format '{{.State.Status}}' g4a-commands

يفحص nginx -t إعداد الخادم في هذا المثال. أما inspect فيعرض هنا الحالة فقط بدل وثيقة JSON كاملة. ويمكن دخول صدفة عند الحاجة:

docker exec -it g4a-commands sh

قد لا تحتوي الصورة على bash، لذلك يكون sh خيارًا متاحًا في كثير من الصور البسيطة، لكنه ليس مضمونًا في جميع الصور. اكتب exit للخروج من الصدفة. ولا تجعل الإصلاحات اليدوية داخل الحاوية بديلًا عن تعديل المشروع أو ملف البناء؛ فهي قد تختفي عند إعادة الإنشاء.

راقب الموارد والمساحة

يعرض stats استخدام الموارد، بينما يصف system df المساحة التي تستخدمها كائنات Docker. هذه معلومات تساعدك على اختيار ما تفحصه، وليست تصريحًا بحذف كل ما يبدو غير مستخدم.

docker stats --no-stream g4a-commands
docker system df

لا تستنتج أن ارتفاع الاستهلاك سببه Docker وحده. قد يكون التطبيق ينفذ مهمة ثقيلة أو يكرر خطأً أو يحتفظ ببيانات في الذاكرة. قارن القياس بسلوك التطبيق، ثم افحص السجلات وحدود الموارد.

مرجع مختصر حسب السؤال

السؤال الأمر المناسب
هل الحاوية تعمل؟ docker ps
أين الحاوية المتوقفة؟ docker ps -a
لماذا خرج التطبيق؟ docker logs ثم فحص الحالة
ما المنفذ المحلي؟ docker port
ما الصور المحلية؟ docker image ls
ما استخدام الموارد؟ docker stats
ما مساحة Docker؟ docker system df

كيف تنظف تمرينك بأمان؟

احذف حاوية التدريب باسمها بعد إيقافها. الأمر التالي لا ينظف مشاريع أخرى ولا يحذف وحدات تخزين عامة:

docker stop g4a-commands
docker rm g4a-commands

أوامر prune أوسع نطاقًا، وقد تحذف موارد تحتاجها لاحقًا بحسب الخيارات المستخدمة. تعلّم نطاقها قبل استعمالها، ولا تنسخ أوامر تجمع الحذف القسري أو حذف وحدات التخزين لمجرد حل مشكلة مساحة مؤقتة.

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

شغّل حاوية التدريب، وافتح صفحتها، ثم اقرأ آخر السجلات وحدد منفذها المحلي. أوقفها وتحقق من الفرق بين ps وps -a، ثم ابدأها مجددًا. إذا استطعت تفسير كل نتيجة بجملة واحدة، فقد فهمت أوامر Docker الأساسية التي ستحتاجها في الدروس التالية.

أسئلة شائعة

ما الفرق بين run وstart؟

run ينشئ حاوية جديدة ويبدأها. start يبدأ حاوية موجودة ومتوقفة بإعداداتها الحالية.

هل Ctrl+C في logs يوقف الحاوية؟

عند متابعة السجلات بالأمر docker logs -f، يوقف Ctrl+C المتابعة فقط.

لماذا لا يعمل bash داخل الصورة؟

قد لا يكون مثبتًا. جرّب الصدفة المتاحة في الصورة أو نفّذ الأمر المطلوب مباشرةً عبر exec.

هل rm يحذف الصورة؟

docker rm يحذف الحاوية المحددة. حذف الصور له أوامر مستقلة مثل docker image rm.

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

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

geekadmin

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

اترك تعليقاً

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