0.4دورة الحياة : run وps وstop وrm وlogs
الأساسي في 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 ليترك التطبيقات تُنهي بنظافة.
🔎 مثال ملموس — 🔎 مثال ملموس — عرض نظيف من البداية إلى النهاية
يسلسل إدير الدورة الكاملة على 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 منهجيا.
في التطبيق — عمليا — أحيِ حاوية
- شغِّل nginx مسماة مع -d، مثل إدير (docker run -d --name demo nginx:1.27).
- اعرضها (ps)، واقرأ سجلاتها.
- ادخلها عبر exec -it … sh، ثم اخرج (exit).
- أوقفها واحذفها، وتحقق عبر ps -a.
نص جاهز — دورة 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).
أسئلة شائعة
ما الفرق بين stop وkill؟
يرسل stop إشارة SIGTERM (يُنهي التطبيق بنظافة) ثم SIGKILL بعد مهلة ؛ ويقتل kill فورا. في الإنتاج نفضل stop — منعكس إدير للتطبيقات.
أين تذهب السجلات؟
يلتقطها المحرك (json-file افتراضيا). ويُعيد docker logs قراءتها ؛ وفكِّر في التدوير للخدمات الدائمة.
تختبر صورة مهملة. أي خيار يجنّب نسيان التنظيف؟