PracticU

Linux Container on Windows 10

בלי כתוביותעם כתוביות
PracticU › קורס Docker - עם Swarm Cluster › Linux Container on Windows 10
מילון מושגים:
Linux - מערכת הפעלה בקוד פתוח מבוססת ליבת Linux, נפוצה מאוד בשרתים וקיימת בהפצות רבות כמו Ubuntu.
קונטיינר - חבילה קלה ומבודדת שאורזת אפליקציה עם כל תלויותיה, ורצה באופן אחיד בכל סביבה, למשל ב-Docker.
Docker - פלטפורמה להרצת אפליקציות בתוך קונטיינרים מבודדים וקלים, כדי שירוצו באופן אחיד בכל סביבה.
Dockerfile - קובץ טקסט עם הוראות לבניית Docker Image, המגדיר את הבסיס, הקבצים והפקודות שיירוצו.
.NET - פלטפורמת פיתוח של מיקרוסופט להרצת יישומים בשפות כמו C#, הכוללת ספריות וסביבת ריצה משותפות.
בייט - יחידת מידע המורכבת משמונה ביטים, ומסוגלת לייצג תו בודד או מספר בין 0 ל-255.
Docker Image - תבנית לקריאה בלבד שמכילה אפליקציה ותלויותיה, וממנה מריצים קונטיינרים ב-Docker.
Hyper-V - טכנולוגיית הווירטואליזציה של מיקרוסופט להרצת מכונות וירטואליות על Windows.

Linux Container on Windows 10
בהרצאה הזאת מבינים איך Docker Desktop מאפשר להריץ קונטיינרים של לינוקס על Windows 10, ואיך אפשר לעבוד עם קונטיינרים של Windows ושל לינוקס בו-זמנית.
בנייה על לינוקס
1. Dockerfile של לינוקס: אותו קוד .NET אפשר לבנות ולהריץ גם על בסיס של לינוקס קטן, שתופס כ-5 מגה בייט. ההרצאה משווה בין שני אימג'ים של אותו קוד: כ-170 מגה על בסיס לינוקס לעומת כ-263 מגה על בסיס Windows.
2. בנייה ושמירה: הפקודה docker build בונה את האימג' על לינוקס, ואפשר להריץ את הקונטיינר שנוצר כרגיל.
מעבר בין מצבים ב-Docker Desktop
1. Switch to Linux containers: האפשרות בתפריט של Docker Desktop מחליפה את המנוע לקונטיינרים של לינוקס. בזמן המעבר קונטיינרים קיימים ממשיכים לרוץ, אבל לא ניתן לנהל אותם עד שמחזירים למצב Windows.
2. דיסק וירטואלי: בזמן ההחלפה נוצר דיסק VHDX, והמנוע מתקין בתוכו לינוקס עם שירות Docker. מנקודת מבט המשתמש הפקודות נשארות כמו קודם, אבל הן רצות בתוך המכונה הווירטואלית.
3. שני מצבים במקביל: ההרצאה מציגה עדכון אחרון של Docker Desktop, בערוץ Edge, שמאפשר לנהל במקביל קונטיינרים של לינוקס וקונטיינרים של Windows דרך אותו שירות. ללא עדכון כזה, הלקוח מחובר לשירות אחד בכל רגע.
4. זיהוי הבידוד: הפקודה hcsdiag list מציגה את הקונטיינרים שרצים בתוך מכונות וירטואליות. בידוד ברמת Hyper-V מפעיל מכונה וירטואלית לכל קונטיינר, ובידוד ברמת תהליך מתאפשר רק לקונטיינרים של Windows.
הגבלות
1. בידוד לינוקס: קונטיינר של לינוקס לא יכול לרוץ בבידוד ברמת תהליך על Windows, ולכן הפקודה נכשלת ומחזירה שהבידוד אינו תקין.
2. התאמת גרסה: קונטיינר של Windows חייב להתאים לגרסת המערכת. ההרצאה מציגה שבגרסה 1903 ו-1809 נדרשת התאמה של מספר הבנייה.
3. התאמת פלטפורמה: אימג' של Alpine, שהוא לינוקס, שמנסים למשוך במצב Windows מחזיר הודעה שאין לו התאמה לפלטפורמת Windows AMD64.
שימו לב
בעדכון הניסיוני לא מוצגים כל הפיצ'רים עדיין. אם מופיעה השגיאה No Matching Manifest for Linux, כדאי לבדוק את מצב המנוע ואת ערוץ העדכון של Docker Desktop.
השיעור הבא בקורס: Docker Volumes

פרקי ההרצאה: Linux Container on Windows 10

  1. 00:00

    מבוא: בילד של אפליקציה על לינוקס

  2. 01:41

    מעבר ל-Linux Containers ב-Docker Desktop

  3. 03:19

    אזהרת המעבר: ניהול קונטיינרי Windows

  4. 04:58

    יצירת מכונה וירטואלית לינוקס ברקע

  5. 06:37

    הקליינט מתחבר לדימון לינוקס

  6. 08:12

    בילד לינוקס עם Dockerfile של .NET

  7. 12:26

    השוואת גודל אימג' Linux לעומת Windows

  8. 13:13

    הרצת קונטיינרי ASP.NET על לינוקס

תמלול ההרצאה: Linux Container on Windows 10

הטקסט המלא של הדקות הראשונות בהרצאה «Linux Container on Windows 10» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    שלום לכולם, בהרצאה הקודמת עשינו בילד לפרויקט שלנו מקבצי מקור האלו שקיבלנו מהמתכנת שלנו ועשינו את הבילד על Windows, נכון שהשתמשנו בקובץ dockerfile הזה כדי לעשות בילד ואם אנחנו נסתכל עליו הוא עובד מתוך האתר של Microsoft.NET Core SDK אבל מה אנחנו יודעים איתכם ש.NET Core עובד גם על לינוקס ואנחנו יכולים לעשות בילד על לינוקס

  2. 00:34

    ותראו, יש לנו פה קובץ dockerfile על פין, על פין זה גרסה של לינוקס מאוד קטנה שתופסת איזה 5 מגה בייט, כן, במקום ג'יגות של מערכת ההפעלה זה תופס איזה 5 מגה, מערכת הפעלה מאוד קטנה של לינוקס, ואנחנו יכולים לעשות בילד כאשר אנחנו משתמשים בעל פין הזה, כן, בלינוקס הזה,

  3. 01:00

    גם כ-run time וגם כ-build, זאת אומרת, נבנה את הכל על לינוקס, ושימו לב, זה היופי ב-dotnet, ואותו סורס קוד, אותו קוד אפשר להריץ גם על ווינדוס וגם על לינוקס ואנחנו נראה עכשיו איך אנחנו עושים בילד על לינוקס והקסם הכי גדול שנוכל לעשות את כל הקונטיינר ואת כל האימג'ים ונריץ מערכת הפעלה של לינוקס על ווינדוס

  4. 01:26

    עכשיו תשאלו אותי איך זה הגיוני הרי אמרת שדוקר מנצל את המערכת ההפעלה שיש במחשב הפיזי אז איך לינוקס יעבוד לך על ווינדוס? אני אראה לכם סוד, יש פה Switch to Linux Container.

  5. 01:46

    בואו נלחץ על זה, ולפני שאני לוחץ על זה אני רוצה להראות לכם מה האופציות שיש לי כרגע. אתם רואים, יש לי ג'נרלים, הגדרות מסוימות, פרוקסים, אני צריך לצאת לאינטרנט דרך איזשהו שרת מתווך באמצע, איזשהו פרוקסי.

  6. 02:00

    דימון, דימון זה למעשה שליטה על סרוויס. אני יכול להעביר את הסרוויס למצב אקספרימנטל, שזה כל מיני פיצ'ירים חדשים. אנחנו נעשה את זה בהמשך ההרצאה הזאת נעביר אותו לאקספרימנטל ואני אראה לכם פיצ'רים חדשים שהולכים לצאת וכשאתם תהיו כבר הם כבר בטח יצאו וריסט סתם ריסט הוא פקטורי דיפולטס זה כל

  7. 02:24

    ההגדרות שיש לנו כרגע ואני עושה פה ודבר הכי חשוב שעוד להראות לכם שאני כרגע במצב סטייבל בגרסה האחרונה יציבה נמצא טוב אז אני עושה סוויץ' לינוקס קונטיינר אולי לפני שאני אעשה סוויץ' אני אראה לכם משהו מגניב שהולך להיות תראו איזה קבצים יש פה בפרוגרם דאטה דסק טופ דוקר דסק טופ אתם רואים מה יש פה אנחנו נחזור לתיקי הזאת בהמשך אתם יודעים מה אפילו נשאיר אותה

  8. 03:05

    פועלת עכשיו ואני לוחץ את האפשרות הקסומה הזאת להפוך קונטיינרים בתוך ווינדוס ללינוקס בואו נראה איזה קסם מתבצע מה הוא כותב לי you are about to switch to Linux containers אתה עומד להחליף את המצב עבודה למצב של לינוקס כל הקונטיינרים הקיימים ימשיכו לעבוד אבל לא תוכל you will not be able to manage them not be able to manage them לא תוכל לנהל אותם הם יעבדו אבל לא

  9. 03:39

    תוכל לנהל אותם הם יעבדו איפה שהוא ברקע ולא תוכל להתחבר אליהם ולנהל אותם אבל מה שרץ רץ עד שלא תעשה switch back to windows container הבנו דבר אחרון שאני מראה לכם לפני שאני אעשה את זה אני רוצה להראות לכם docker version docker וארג'ן אנחנו רואים פה את הגרסה שלי ששרת אצלי עובד בווינדוס זה החלק של השרת עובד בווינדוס

  10. 04:10

    והחלק של הקליינט גם הוא בווינדוס יש? יש. אנחנו יכולים גם לעשות docker info ולקבל עוד יותר מידע אתם רואים docker info מראה לי את כל המידע נדבר על זה בהמשך על ה docker info יש פה הרבה מידע כרגע נסתפק בדוקר ורז'ן שזה תקציר של כל הסיפור שימו לב יופי אז אנחנו כאן עוקבים אחרי הדבר הזה ובדוקר אימג'ס שימו לב מה אנחנו רואים

  11. 04:46

    אנחנו רואים פה את כל האימג'ים יפה אז אנחנו מוכנים לקסם בואו נעשה את הקסם שלנו עושים רייט קליק סוויץ' מחליפים כל המערכת ללינוקס נראה מה יהיה שימו לב זה לוקח הרבה זמן אתם רואים הנה התווספה פה תיקי אביים דאטה שימו לב והתווספה פה תיקייה שלא הייתה לפני כן, ובתיקייה הזאת כרגע אין כלום.

  12. 05:16

    הופה, נוצר פה דיסק. בואו נראה איזה סוג של דיסק זה. זה דיסק VHDX, כאילו מכונה וירטואלית עם 4 מגה בייט. אתם רואים, דוקר ממשיך לרוץ.

  13. 05:37

    אתם כבר מדמיינים מה קורה מאחורי הקלעים? שהוא עושה לי מכונה וירטואלית של לינוקס. ומעכשיו הדוקר המקומי שלי, בלי שאני רואה את זה, בלי שאני יודע על איזה משהו מתחבר לסרוויץ לדוקר דימון שעובד בתוך הלינוקס הזה זאת אומרת יש לנו עכשיו VHD עם לינוקס אתם ממש רואים איך שהוא מתקין את זה תראו זה כבר 70 מגה אז הוא ממש מתקין לי לינוקס בפנים מכונה וירטואלית ומריז שם בפנים דימון ואני אוכל

  14. 06:18

    מנקודת מבט שלי לעבוד רגיל וכל הפקודות שישלחו מהקליינט שלי יתחברו לדימון שרץ בתוך מכונה וירטואלית זאת אומרת בתוך מכונה וירטואלית רץ סרוויס מאחורי הקלעים.

  15. 06:31

    דימון זה סרוויס, בשפה של לינוקס דימון זה סרוויס. אז יש לי סרוויס של דוקר שרץ מאחורי הקלעים בתוך המכונה הווירטואלית הזאת ואני מהקליינט שלי מתחבר לשמה ומריץ עליו פקודות.

  16. 06:47

    לי זה לא אכפת כי אני מריץ את כל הפקודות מקומית אצלי, עובד רגיל והוא מבצע הכל על מכונה וירטואלית מרוחקת וזה בעצם הקסם. עכשיו, אם אני לא מספר לכם את כל מה שקורה מאחורי הקלעים, אתם מבחינתכם לחצתם סוויץ', הנה אתם רואים, הוא סיים.

  17. 07:08

    שימו לב מה קרה. דוקר ורג'ן, שימו לב, הקליינט נשאר אצלי, אבל הסרבר, אתם רואים שהוא השתנה לחלוטין, הוא הלך ללינוקס, כי עכשיו הקליינט שלי מחובר לדימון שרץ שמה.

  18. 07:29

    עכשיו, אם אני מחובר לדימון שרץ שמה, אין לי שום אימג'. אתם רואים? אין לי שום אימג'. אני מבחינתי ממשיך לעבוד רגיל ואני לא יודע שכל זה קורה מאחורי הקלעים שלי.

  19. 07:42

    אם אנחנו גם ניכנס לסטינגס של מכונה וירטואלית, תכף אנחנו נפעיל אותו וניכנס לסטינגס. אני רוצה עכשיו לעשות בילד. מה זה לעשות בילד? אני נכנס פה לדוגמה הזאת שאיתה אנחנו עובדים, כן? מי שלא יודע, אנחנו רצים על הדוגמה של docker images for sp.net מאתר של מייקרוסופט ועכשיו אנחנו נעשה בילד בתוך לינוקס.

  20. 08:12

    שימו לב, זו אותה פקודה בילד כמו במייקרוסופט, אין שום הבדל. דוקר בילד ושמים איזשהו טאג, זה הכל.

  21. 08:19

    אנחנו נעשה לזה בילד, ותסתכלו מה יקרה כשאני אלחץ פה אנטר, אתם תכף תראו שהגודל שלו מתחיל לגדול. הוא מתחיל להוריד הכל מההתחלה. אוי, אוי, אוי, רגע, אני צריך לעשות לו רק לא core sdk, אני לא רוצה שיעשה את זה על core sdk הזה.

  22. 08:45

    אתם יודעים מה, אפשר לעשות אפילו, אתם יודעים מה, בואו נעשה בילד רגיל פשוט, נראה מה יקרה רציתי למה עצרתי אותו כי התכוונתי לעשות להגיד לו שיעשה בילד עם קובץ דוקר 2000 x64 כאילו להגיד לו שישתמש באימג' של לינוקס בתור בסיס כן והרצתי אותו עם דוקר פייל הרגיל איך שמתי לב לזה

  23. 09:14

    אתם רואים שהוא פה עושה sdk 22 וב-2000 הזה יש לו notepad++, אתם רואים 2.2.2 זה אומר על לינוקס לעשות ובדוקר פייל הרגיל זה 2.2.2 הרגיל טוב בוא נראה אם הבילד הזה יעבוד לנו ואחרי זה נעשה בילד עם לינוקס ונראה הבדלים עכשיו אני אעשה פאוזה ואנחנו הולכים לחקור את הכל יותר לעומק זה הולך להיות מאוד מעניין

  24. 09:53

    ואם דאטה שימו לב הוא צומח אתם רואים כי הכל קורה בתוך המכונה הווירטואלית עכשיו עוד משהו מעניין שבIPRV בכלי ניהול של מכונות וירטואלית של היפר-וי אנחנו ממש רואים שבמחשב שלי יש מכונה וירטואלית שנקראת דוקר דסקטופ עם שתי ג'יגה ראם אז הבנו שהקליינט שלי מתחבר לסרוויס לסרוור שרץ בתוך מכונה וירטואלית

  25. 10:22

    עכשיו אני כיוזר קצה כמשתמש קצה לא יודע את כל זה ואני מבחינתי עובד ב-CMD הרגיל שלי אני לא יודע לאן הוא שולח הקליינט שלי ה-CMD הרגיל שלי הדוקר EXE שלי לאן הוא שולח את הפקודות אז אני עובד רגיל ואני מקמפל את הדברים שם.

  26. 10:48

    עכשיו, מה זה לא נוח? שאני לא יכול בו זמנית עם הקליינט להיות מחובר לשני סרוויסים, או שאני בסרוויס של מייקרוסופט או שאני בסרוויס של לינוקס.

  27. 11:00

    וזה לא נוח, ועל זה אנחנו נפתור בהמשך. הנה אני רואה שהוא עובד, הנה הוא בנה לנו אותו. עכשיו אני רוצה לעשות לו בילד עוד פעם, רק הפעם לציין לו פייל שנקרא docker file 2000. שיעשה בילד עם אימג' של לינוקס ולזה נקרא לזה נקודתיים ניתן לזה תגיד לינוקס שיעשה לי עוד בילד אחד הפעם זה מ2000 ובגלל זה הוא מושך עוד פעם מההתחלה כי אין לו קאש לזה

  28. 11:37

    ומעניין אותי להשוות גודל שימו לב שזה אותו קוד אנחנו לא משנים שום קוד הקוד של דוטנט עובד גם על לינוקס וגם על ווינדוס בגלל שזה דוטנט קוד פעם היה .NET framework שהיה עובד רק על מייקרוסופט, הם הוציאו גרסה אחרונה 4.8 ואחרי זה הזניחו את ה-framework והלכו ל- .NET Core, וה- .NET Core עובד גם על Windows, גם על לינוקס,

  29. 12:08

    וזה למעשה כמו framework, רק נקי. אני אעשה פאוזה ונמשיך אחרי שהוא יוריד את זה ויעשה בילד עד הסוף. הנה הוא סיים לעשות בילד, שימו לב הוא נותן לי פה אזהרה security burning שבגלל שאני בונה אימג'ים של לינוקס על וינדוס יכול להיות שיש פה יותר מדי הרשאות שחילקנו לקבצים ואנחנו רואים שיש לנו פה אימג' של לינוקס שתופס 170 מגה בייט

  30. 12:46

    שימו לב אתם רואים אותו אימג' על לינוקס על וינדוס שתופס 263 שימו לב זה אותו קוד אותו .NET core רק הבסיס שלו פה זה לינוקס זה 170 מגה וזה 263 זה משמעותי מאוד ואנחנו נעדיף אפילו לעבוד על לינוקס כבסיס, בגלל שזו אותה תוכנה, רק תופסת פחות מקום.

  31. 13:18

    בואו נריץ ונראה שהכל עובד לנו, נעשה docker run, נריץ קונטיינר, איך שנעצור אותו שיימחק, כי אנחנו לא צריכים אותו שירוץ לנו פה, שיימחק איך שאנחנו, אתם יודעים מה שלא יימחק, שיימחק ונעשה אותו disconnected מאחורי הקלעים שירוץ, ואיזה קונטיינר, ניקח את ה-sp.net,

  32. 13:51

    אז זה של מייקרוסופט זה בעצם לייטסט שאפשר לו לכתוב אותו וניתן לזה פורט 8080 ממופה ל-80 פנימה בוא נעשה את זה 81sp.net הנה הוא הוריץ לי את הקונטיינר הזה dockerps הנה הוא עובד ועכשיו אני אעשה 8082 שירוץ לי הקונטיינר הזה לינוקס על 8082 יופי, שני קונטיינרים רצים מאחורי הקלעים, PS אני רואה את שניהם, בואו נבדוק שזה עובד,

לקורס המלא: קורס Docker עם Swarm Cluster

ההרצאה הקודמת: Linux Container on Server 2019

ההרצאה הבאה: Docker Volumes

הרצאות קשורות מקורסים אחרים

  • container
  • התקנה של linux על 10 Windows
  • Linux VM on Google Cloud
  • לולאת Sequence Container ב-SSIS

קורסים נוספים במסלול

  • קורס AWS - ניהול מכונה וירטואלית בענן
  • קורס Terraform - DevOps - Azure & AWS
  • קורס קוברנטיקס - Kubernetes
  • קורס DevOps - Ansible
  • קורס PowerShell
  • קורס Git ו-GitHub עם Visual Studio