משך: 1.5 שעות אקדמיות (68 דקות).

מטרת השיעור: הסטודנטים ישלטו בכלי הדיבוג והניהול היומיומיים לקונטיינר רץ.

בסוף השיעור הסטודנטים צריכים: להשתמש ב-docker logs/exec לאבחון בעיות, לנהל lifecycle (stop/rm), ולהסביר מתי להשתמש ב-prune בזהירות.

דגש קריטי: זהו שיעור-כלים מעשי — תרגול חי דומיננטי, לא הרצאה. סטודנטים צריכים לצאת עם “רפלקס” של סדר אבחון, לא רק רשימת פקודות.


מהלך השיעור

חלק בשיעורמשךהערות ודגשים
פתיחה וחיבור5 דקותשאלו: “קונטיינר רץ (docker ps מראה אותו) אבל API לא עונה — מה בודקים?”
docker logs15 דקותהדגמה חיה, כולל -f
docker exec15 דקותפתיחת shell, בדיקת קבצים בפנים
Lifecycle: stop/rm15 דקותהבדל בין עצירה למחיקה
ניקוי: prune10 דקותאזהרה על שימוש זהיר
תרגול מודרך8 דקותתרגיל 1+2

דגשים להעברת השיעור

  • זהו שיעור שמתאים במיוחד לפורמט “תקלה מכוונת → אבחון בפועל” — שברו במכוון קונטיינר (למשל מיפוי פורט שגוי) ותנו לסטודנטים לאבחן צעד-צעד עם הכלים שלמדו, לא רק להדגים פתרון מוכן.
  • הדגישו את הסדר ההגיוני: docker ps (בכלל רץ?) → docker logs (שגיאות?) → docker exec (מה קורה בפנים?) — רצף אבחון, לא כלים נפרדים.
  • prune שווה אזהרה מפורשת — לא להריץ אותו “סתם” בלי להבין מה יימחק, במיוחד בסביבת עבודה משותפת.

מושגים

docker logs — פלט Console מתוך הקונטיינר. docker exec — הרצת פקודה/shell בקונטיינר רץ. Container Lifecycle — נוצר→רץ→נעצר→נמחק. docker system prune — ניקוי משאבים לא-בשימוש.


תרגיל חשיבה

שאלת פתיחה: “הקונטיינר שלכם רץ (docker ps מראה אותו), אבל curl localhost:8080 נכשל עם ‘connection refused’. מה שלושת הדברים הראשונים שהייתם בודקים, לפי הסדר?”

מהלך: הובילו את הסטודנטים לבנות סדר הגיוני: (1) docker logs — האם השרת בכלל עלה בהצלחה בפנים? (2) מיפוי הפורט — האם -p היה נכון בהרצה? (3) docker exec — האם הקבצים/הקונפיגורציה בפנים תקינים? זה בדיוק הרפלקס המקצועי שהם צריכים לפתח.

מה המרצה מראה בסוף: הריצו קונטיינר עם מיפוי פורט שגוי בכוונה (למשל -p 8080:8080 כשהשרת בפנים מאזין בפועל על 80), ותנו לסטודנט לאבחן בשידור חי לפי הסדר שזה עתה בנו יחד — logs (יראה שהשרת רץ, מאזין על 80), ואז יבינו שהבעיה במיפוי הפורט.