On this page
מערך שיעור: מה זה Docker
משך: 1.5 שעות אקדמיות (68 דקות).
מטרת השיעור: הסטודנטים יבינו את ההבדל בין Image ל-Container, ויריצו Containers ראשונים בעצמם.
בסוף השיעור הסטודנטים צריכים: להסביר Image מול Container באנלוגיה ל-Class/Object, להריץ Container עם מיפוי פורט, ולהסביר למה Docker פותר “אצלי זה עובד”.
דגש קריטי: פתחו עם “אצלי זה עובד” כתופעה שכל סטודנט כבר חווה או ישמע עליה — זו נקודת הכניסה הרגשית לכל הנושא.
מהלך השיעור
| חלק בשיעור | משך | הערות ודגשים |
|---|---|---|
| פתיחה וחיבור | 5 דקות | שאלו: “מי כבר שמע/חווה ‘אצלי זה עובד’?” |
| הבעיה: סביבות שונות | 10 דקות | גרסאות .NET שונות, תלויות מתנגשות |
| הרעיון: Image מול Container | 20 דקות | אנלוגיה ל-Class/Object מהיחידה הראשונה |
| הדגמה חיה: docker run | 15 דקות | hello-world, ואז שרת אמיתי |
| מיפוי פורטים | 10 דקות | -p host:container, גישה מהדפדפן |
| תרגול מודרך | 8 דקות | תרגיל 1+2 |
דגשים להעברת השיעור
- האנלוגיה ל-Class/Object (Image=Class, Container=Object) היא הגשר הכי מהיר להבנה עבור סטודנטים שכבר עברו את יחידת ה-OOP — נצלו אותה במפורש.
- ודאו ש-Docker Desktop מותקן ורץ אצל כל הסטודנטים לפני תחילת השיעור — בעיות התקנה הן החסם הכי נפוץ ליחידה הזו.
- הריצו לפחות Container אחד בשידור חי מהמחשב שלכם — לא להסתפק בתיאור פקודות על שקופית.
מושגים
Image — תבנית קפואה שממנה יוצרים Containers. Container — מופע רץ ומבודד של Image. Isolation — כל Container מבודד, לא מתנגש בתלויות אחרות.
תרגיל חשיבה
שאלת פתיחה: “יש לכם שני פרויקטים על אותו מחשב — אחד דורש .NET 6, השני .NET 8. בלי Docker, איך הייתם פותרים את זה?”
מהלך: תנו לסטודנטים להציע פתרונות — התקנת שתי גרסאות .NET במקביל (מסובך, לפעמים לא אפשרי), או VM נפרד לכל פרויקט (כבד מאוד). הובילו לתובנה: Docker נותן פתרון קליל בהרבה — כל Container מביא את גרסת ה-runtime שלו, בלי להתקין כלום גלובלית על המחשב המארח.
מה המרצה מראה בסוף: אם אפשר, הריצו שני Containers עם תגי גרסה שונים של אותו Image (למשל mcr.microsoft.com/dotnet/sdk:6.0 ו-mcr.microsoft.com/dotnet/sdk:8.0) בו-זמנית, והראו dotnet --version שונה בכל אחד — בלי שום התקנה גלובלית על המחשב המארח.