0.4 · دورة الحياة : run وps وstop وrm وlogs

الأساسيات

0.4دورة الحياة : run وps وstop وrm وlogs

الهدف: إتقان دورة حياة الحاوية الكاملة في اليوميات.
الوقت المقدّر: 12 دقيقة · قراءة ذاتية · إذا كان لديك 5 دقائق فقط: اقرأ «الأساسي في 30 ثانية» + المخطط.

الأساسي في 30 ثانية

  • يُنشئ run ويُشغِّل (pull مع create مع start) : -d للخلفية، و--rm للتجارب المهملة ذات الحذف الذاتي.
  • يرى ps ويقرأ logs ويدخل exec : يعرض ps الأحياء (وps -a الكل)، ويتابع logs -f السجلات، ويفتح exec -it صدفة داخلها.
  • يوقف stop بأدب، ويحذف rm القشرة : نفضل stop على kill، ونطهّر المتوقفات عبر prune.

حالة مستمرة — إدير يُحيي عرضا نظيفا من البداية إلى النهاية

إدير، مهندس DevOps مبتدئ في الجزائر، يجب أن يعرض nginx لفريقه : بدلا من ترك أشباح بـ -d، يلعب الدورة الكاملة. يُشغِّل عبر docker run -d --name demo nginx:1.27، ويعرض عبر docker ps، ويقرأ عبر docker logs demo، ويدخل عبر docker exec -it demo sh ثم يخرج عبر exit، ويوقف عبر docker stop demo، ويحذف عبر docker rm demo، ويتحقق عبر docker ps -a أن كل شيء اختفى. ستة أوامر، وصفر حاوية exited منسية : 80 % من استعماله اليومي مغطى.

حالة مستقلة لهذا القسم : تعود في الدرس والمخطط والنص الجاهز وتحدي 48 ساعة للقسم 0.4.

1. الولادة : run‏ = pull‏ + create‏ + start

يفعل docker run -d --name demo nginx:1.27 ثلاثة أشياء : تنزيل الصورة عند الحاجة، وإنشاء الحاوية، وتشغيلها في الخلفية (-d). ودون -d يبقى الطرفي مرتبطا ؛ ومع --rm تحذف الحاوية نفسها عند التوقف (مثالي للتجارب). يسمي إدير دائما (--name) ليصيب بعدها.

2. الحياة : رؤية ومتابعة ودخول

يسرد docker ps الأحياء، ويضيف ps -a الأموات. ويتابع docker logs -f demo السجلات، ويفتح docker exec -it demo sh صدفة داخل الحاوية الحية. احفظ : logs للرؤية، وexec للدخول. يقرأ إدير السجلات أولا قبل الدخول : فأغلب التشخيصات تتوقف هناك.

3. الموت النظيف : stop ثم rm

يرسل docker stop demo إيقافا مهذبا (SIGTERM ثم SIGKILL)، ويحذف docker rm demo القشرة. ويفرض docker rm -f الاثنين معا. والحاويات المتوقفة غير المحذوفة تزدحم : فـ docker container prune منتظم ينظِّف. يفضل إدير stop على kill ليترك التطبيقات تُنهي بنظافة.

خطأ شائع في الفهم: « أغلق الطرفي للإيقاف، وأترك المتوقفات تتكدس، وrm يحذف الصورة أيضا ». لا، خطأ ثلاثي. إغلاق الطرفي يترك شبحا بـ -d : نوقف عبر stop، ونحذف عبر rm، ونتحقق عبر ps -a. وعشرات الحاويات exited تزدحم في القرص : --rm للتجارب، وprune منتظم وإلا. ويستهدف rm الحاوية لا الصورة (rmi) : فالخلط بينهما يمحو الشيء الخطأ.
دورة الحياة إنشاء وتشغيل، ومراقبة، ثم إيقاف وحذف : الدورة الكاملة. run (إنشاء+تشغيل) الولادةمع -d و--nameps / logs / exec رؤيةوقراءة ودخولstop ثم rm موت نظيف
إنشاء وتشغيل، ومراقبة، ثم إيقاف وحذف : الدورة الكاملة.
نص المخطط (SEO / قارئات الشاشة / الترجمة): 1) إدير، مهندس DevOps مبتدئ في الجزائر، يُولِّد حاويته : يُنزِّل docker run -d --name demo nginx:1.27 الصورة عند الحاجة، ويُنشئ ثم يُشغِّل في الخلفية — مع --rm للتجارب المهملة ذات الحذف الذاتي. 2) يُحييها : يسرد docker ps الأحياء (ويضيف ps -a الأموات)، ويتابع docker logs -f demo السجلات، ويفتح docker exec -it demo sh صدفة داخلها — logs للرؤية وexec للدخول. 3) يُميتها بنظافة : docker stop demo (إيقاف مهذب SIGTERM ثم SIGKILL) ثم docker rm demo (حذف القشرة)، وrm -f للفرض، وdocker container prune ضد تكدس exited. الدرس : هذه الدورة في ستة أوامر تغطي 80 % من اليوميات.

🔎 مثال ملموس — 🔎 مثال ملموس — عرض نظيف من البداية إلى النهاية

يسلسل إدير الدورة الكاملة على demo، ثم يتحقق أنه لم يبقَ شيء.

docker run -d --name demo nginx:1.27
docker ps
docker logs demo
docker stop demo
docker rm demo
docker ps -a

القراءة : نرى الحاوية الحية، ونقرأ سجلاتها، ونوقفها، ونحذفها، ونتحقق أنها اختفت.

الدرس : هذه الدورة في ستة أوامر هي 80 % من استعمالك اليومي.

مفردات القسم

run
إنشاء + تشغيل حاوية من صورة.

مثال بسيط: يكتب إدير docker run -d --name demo nginx:1.27 : pull مع create مع start.

ما ليس كذلك: مجرد سرد الحاويات.

رد فعل: دائما --name لتصيب بعدها.

ps
سرد الحاويات (الأحياء، أو الكل مع -a).

مثال بسيط: يرى إدير demo حية عبر ps، ثم مختفية عبر ps -a بعد rm.

ما ليس كذلك: سرد الصور.

رد فعل: تائه؟ يعرض ps -a الأموات أيضا.

exec
تنفيذ أمر في حاوية حية.

مثال بسيط: يفتح إدير صدفة عبر docker exec -it demo sh ثم exit.

ما ليس كذلك: تشغيل حاوية جديدة.

رد فعل: التشخيص : logs أولا، ثم exec.

stop / rm
إيقاف مهذب / حذف القشرة.

مثال بسيط: يوقف إدير demo (SIGTERM) ثم يحذف قشرتها عبر rm.

ما ليس كذلك: حذف الصورة (rmi).

رد فعل: stop قبل rm، وأبدا إغلاق الطرفي.

--rm
حذف الحاوية تلقائيا عند توقفها.

مثال بسيط: يضيفها إدير إلى كل تجاربه المهملة : صفر شبح exited.

ما ليس كذلك: الفصل في الخلفية (-d).

رد فعل: تجربة مهملة ← --rm منهجيا.

في التطبيق — عمليا — أحيِ حاوية

  1. شغِّل nginx مسماة مع -d، مثل إدير (docker run -d --name demo nginx:1.27).
  2. اعرضها (ps)، واقرأ سجلاتها.
  3. ادخلها عبر exec -it … sh، ثم اخرج (exit).
  4. أوقفها واحذفها، وتحقق عبر ps -a.
دورة run ثم ps ثم logs ثم stop ثم rm لم يعد فيها سر.

نص جاهز — دورة demo لإدير في 6 أوامر (5 دقائق)

1) اكتب docker run -d --name demo nginx:1.27 : ولادة في الخلفية. 2) اكتب docker ps ثم docker logs demo : الحي وسجلاته. 3) اكتب docker exec -it demo sh، وانظر، ثم اكتب exit : دخول وخروج. 4) اكتب docker stop demo ثم docker rm demo : إيقاف مهذب ثم حذف. 5) اكتب docker ps -a : مثل إدير، تحقق أن demo اختفت — وإلا، فـ docker container prune لتطهير المتوقفات.

لتجربة مهملة بسيطة، أضف --rm إلى run : لا خطوة 4 تُنسى.

قالب جاهز للنسخ — مذكرة دورة الحياة

docker run -d --name demo nginx:1.27   # الولادة (pull مع create مع start)
docker ps                              # رؤية الأحياء (ps -a = الكل)
docker logs demo                       # القراءة (logs -f = المتابعة)
docker exec -it demo sh                # الدخول (exit = الخروج)
docker stop demo                       # إيقاف مهذب (SIGTERM ثم SIGKILL)
docker rm demo                         # حذف القشرة
docker ps -a                           # التحقق من الاختفاء

تجربة مهملة

يختبر إدير صورة مجهولة مع --rm : تحذف الحاوية نفسها عند التوقف، ولا exited.

تصحيح سريع

خدمة صامتة : يقرأ إدير docker logs demo أولا، ثم يدخل عبر exec -it demo sh عند الحاجة.

إيقاف مهذب

في الإنتاج يفضل إدير stop (SIGTERM، نهاية نظيفة) على kill (موت فوري).

تنظيف كبير

عشرات المنسيات exited : يطهّر إدير عبر docker container prune ويبدأ نظيفا.

✓ ممارسات جيدة

  • سمِّ (--name) لتصيب بعدها.
  • استعمل --rm لكل التجارب المهملة.
  • فضِّل stop على kill : فالتطبيقات تُنهي بنظافة.

✗ أخطاء شائعة

  • ترك عشرات الحاويات exited (نسيان prune).
  • الخلط بين rm (الحاوية) وrmi (الصورة).
  • إغلاق الطرفي بدلا من الإيقاف (أشباح بـ -d).

النقاط الأساسية

  • يُنشئ run ويُشغِّل.
  • يرى ps ويقرأ logs ويدخل exec.
  • يوقف stop ويحذف rm.
  • يُبقي --rm وprune الجهاز نظيفا.

تحدي 48 ساعة — طبِّق غدا

العب دورة demo لإدير دون غش : تشغيل run -d مسماة، وps، وlogs، وexec مع exit، وstop، وrm — ثم ps -a لتثبت أنه لم يبقَ شيء.

قائمة الخروج من القسم
  • أستطيع لعب دورة run ثم ps ثم logs ثم exec ثم stop ثم rm دون مساعدة.
  • أعرف قراءة الأحياء والأموات عبر ps وps -a.
  • يبقى جهازي نظيفا (--rm للتجارب، وprune ضد exited).
تقييم ذاتي 1-5 : هل أسلسل الأوامر الستة دون النظر إلى المذكرة؟تقييم ذاتي 1-5 : هل تحققت من الاختفاء عبر ps -a (صفر شبح)؟

أسئلة شائعة

ما الفرق بين stop وkill؟

يرسل stop إشارة SIGTERM (يُنهي التطبيق بنظافة) ثم SIGKILL بعد مهلة ؛ ويقتل kill فورا. في الإنتاج نفضل stop — منعكس إدير للتطبيقات.

أين تذهب السجلات؟

يلتقطها المحرك (json-file افتراضيا). ويُعيد docker logs قراءتها ؛ وفكِّر في التدوير للخدمات الدائمة.

تحقّق من فهمك

تختبر صورة مهملة. أي خيار يجنّب نسيان التنظيف؟

موارد إضافية (اختياري، للتعمّق أكثر)

اختبار المستوى 0أسئلة جديدة وأصعب للتحقق من مكتسباتك