
docker build בונה את האימג' על לינוקס, ואפשר להריץ את הקונטיינר שנוצר כרגיל.hcsdiag list מציגה את הקונטיינרים שרצים בתוך מכונות וירטואליות. בידוד ברמת Hyper-V מפעיל מכונה וירטואלית לכל קונטיינר, ובידוד ברמת תהליך מתאפשר רק לקונטיינרים של Windows.הטקסט המלא של הדקות הראשונות בהרצאה «Linux Container on Windows 10» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, בהרצאה הקודמת עשינו בילד לפרויקט שלנו מקבצי מקור האלו שקיבלנו מהמתכנת שלנו ועשינו את הבילד על Windows, נכון שהשתמשנו בקובץ dockerfile הזה כדי לעשות בילד ואם אנחנו נסתכל עליו הוא עובד מתוך האתר של Microsoft.NET Core SDK אבל מה אנחנו יודעים איתכם ש.NET Core עובד גם על לינוקס ואנחנו יכולים לעשות בילד על לינוקס
ותראו, יש לנו פה קובץ dockerfile על פין, על פין זה גרסה של לינוקס מאוד קטנה שתופסת איזה 5 מגה בייט, כן, במקום ג'יגות של מערכת ההפעלה זה תופס איזה 5 מגה, מערכת הפעלה מאוד קטנה של לינוקס, ואנחנו יכולים לעשות בילד כאשר אנחנו משתמשים בעל פין הזה, כן, בלינוקס הזה,
גם כ-run time וגם כ-build, זאת אומרת, נבנה את הכל על לינוקס, ושימו לב, זה היופי ב-dotnet, ואותו סורס קוד, אותו קוד אפשר להריץ גם על ווינדוס וגם על לינוקס ואנחנו נראה עכשיו איך אנחנו עושים בילד על לינוקס והקסם הכי גדול שנוכל לעשות את כל הקונטיינר ואת כל האימג'ים ונריץ מערכת הפעלה של לינוקס על ווינדוס
עכשיו תשאלו אותי איך זה הגיוני הרי אמרת שדוקר מנצל את המערכת ההפעלה שיש במחשב הפיזי אז איך לינוקס יעבוד לך על ווינדוס? אני אראה לכם סוד, יש פה Switch to Linux Container.
בואו נלחץ על זה, ולפני שאני לוחץ על זה אני רוצה להראות לכם מה האופציות שיש לי כרגע. אתם רואים, יש לי ג'נרלים, הגדרות מסוימות, פרוקסים, אני צריך לצאת לאינטרנט דרך איזשהו שרת מתווך באמצע, איזשהו פרוקסי.
דימון, דימון זה למעשה שליטה על סרוויס. אני יכול להעביר את הסרוויס למצב אקספרימנטל, שזה כל מיני פיצ'ירים חדשים. אנחנו נעשה את זה בהמשך ההרצאה הזאת נעביר אותו לאקספרימנטל ואני אראה לכם פיצ'רים חדשים שהולכים לצאת וכשאתם תהיו כבר הם כבר בטח יצאו וריסט סתם ריסט הוא פקטורי דיפולטס זה כל
ההגדרות שיש לנו כרגע ואני עושה פה ודבר הכי חשוב שעוד להראות לכם שאני כרגע במצב סטייבל בגרסה האחרונה יציבה נמצא טוב אז אני עושה סוויץ' לינוקס קונטיינר אולי לפני שאני אעשה סוויץ' אני אראה לכם משהו מגניב שהולך להיות תראו איזה קבצים יש פה בפרוגרם דאטה דסק טופ דוקר דסק טופ אתם רואים מה יש פה אנחנו נחזור לתיקי הזאת בהמשך אתם יודעים מה אפילו נשאיר אותה
פועלת עכשיו ואני לוחץ את האפשרות הקסומה הזאת להפוך קונטיינרים בתוך ווינדוס ללינוקס בואו נראה איזה קסם מתבצע מה הוא כותב לי you are about to switch to Linux containers אתה עומד להחליף את המצב עבודה למצב של לינוקס כל הקונטיינרים הקיימים ימשיכו לעבוד אבל לא תוכל you will not be able to manage them not be able to manage them לא תוכל לנהל אותם הם יעבדו אבל לא
תוכל לנהל אותם הם יעבדו איפה שהוא ברקע ולא תוכל להתחבר אליהם ולנהל אותם אבל מה שרץ רץ עד שלא תעשה switch back to windows container הבנו דבר אחרון שאני מראה לכם לפני שאני אעשה את זה אני רוצה להראות לכם docker version docker וארג'ן אנחנו רואים פה את הגרסה שלי ששרת אצלי עובד בווינדוס זה החלק של השרת עובד בווינדוס
והחלק של הקליינט גם הוא בווינדוס יש? יש. אנחנו יכולים גם לעשות docker info ולקבל עוד יותר מידע אתם רואים docker info מראה לי את כל המידע נדבר על זה בהמשך על ה docker info יש פה הרבה מידע כרגע נסתפק בדוקר ורז'ן שזה תקציר של כל הסיפור שימו לב יופי אז אנחנו כאן עוקבים אחרי הדבר הזה ובדוקר אימג'ס שימו לב מה אנחנו רואים
אנחנו רואים פה את כל האימג'ים יפה אז אנחנו מוכנים לקסם בואו נעשה את הקסם שלנו עושים רייט קליק סוויץ' מחליפים כל המערכת ללינוקס נראה מה יהיה שימו לב זה לוקח הרבה זמן אתם רואים הנה התווספה פה תיקי אביים דאטה שימו לב והתווספה פה תיקייה שלא הייתה לפני כן, ובתיקייה הזאת כרגע אין כלום.
הופה, נוצר פה דיסק. בואו נראה איזה סוג של דיסק זה. זה דיסק VHDX, כאילו מכונה וירטואלית עם 4 מגה בייט. אתם רואים, דוקר ממשיך לרוץ.
אתם כבר מדמיינים מה קורה מאחורי הקלעים? שהוא עושה לי מכונה וירטואלית של לינוקס. ומעכשיו הדוקר המקומי שלי, בלי שאני רואה את זה, בלי שאני יודע על איזה משהו מתחבר לסרוויץ לדוקר דימון שעובד בתוך הלינוקס הזה זאת אומרת יש לנו עכשיו VHD עם לינוקס אתם ממש רואים איך שהוא מתקין את זה תראו זה כבר 70 מגה אז הוא ממש מתקין לי לינוקס בפנים מכונה וירטואלית ומריז שם בפנים דימון ואני אוכל
מנקודת מבט שלי לעבוד רגיל וכל הפקודות שישלחו מהקליינט שלי יתחברו לדימון שרץ בתוך מכונה וירטואלית זאת אומרת בתוך מכונה וירטואלית רץ סרוויס מאחורי הקלעים.
דימון זה סרוויס, בשפה של לינוקס דימון זה סרוויס. אז יש לי סרוויס של דוקר שרץ מאחורי הקלעים בתוך המכונה הווירטואלית הזאת ואני מהקליינט שלי מתחבר לשמה ומריץ עליו פקודות.
לי זה לא אכפת כי אני מריץ את כל הפקודות מקומית אצלי, עובד רגיל והוא מבצע הכל על מכונה וירטואלית מרוחקת וזה בעצם הקסם. עכשיו, אם אני לא מספר לכם את כל מה שקורה מאחורי הקלעים, אתם מבחינתכם לחצתם סוויץ', הנה אתם רואים, הוא סיים.
שימו לב מה קרה. דוקר ורג'ן, שימו לב, הקליינט נשאר אצלי, אבל הסרבר, אתם רואים שהוא השתנה לחלוטין, הוא הלך ללינוקס, כי עכשיו הקליינט שלי מחובר לדימון שרץ שמה.
עכשיו, אם אני מחובר לדימון שרץ שמה, אין לי שום אימג'. אתם רואים? אין לי שום אימג'. אני מבחינתי ממשיך לעבוד רגיל ואני לא יודע שכל זה קורה מאחורי הקלעים שלי.
אם אנחנו גם ניכנס לסטינגס של מכונה וירטואלית, תכף אנחנו נפעיל אותו וניכנס לסטינגס. אני רוצה עכשיו לעשות בילד. מה זה לעשות בילד? אני נכנס פה לדוגמה הזאת שאיתה אנחנו עובדים, כן? מי שלא יודע, אנחנו רצים על הדוגמה של docker images for sp.net מאתר של מייקרוסופט ועכשיו אנחנו נעשה בילד בתוך לינוקס.
שימו לב, זו אותה פקודה בילד כמו במייקרוסופט, אין שום הבדל. דוקר בילד ושמים איזשהו טאג, זה הכל.
אנחנו נעשה לזה בילד, ותסתכלו מה יקרה כשאני אלחץ פה אנטר, אתם תכף תראו שהגודל שלו מתחיל לגדול. הוא מתחיל להוריד הכל מההתחלה. אוי, אוי, אוי, רגע, אני צריך לעשות לו רק לא core sdk, אני לא רוצה שיעשה את זה על core sdk הזה.
אתם יודעים מה, אפשר לעשות אפילו, אתם יודעים מה, בואו נעשה בילד רגיל פשוט, נראה מה יקרה רציתי למה עצרתי אותו כי התכוונתי לעשות להגיד לו שיעשה בילד עם קובץ דוקר 2000 x64 כאילו להגיד לו שישתמש באימג' של לינוקס בתור בסיס כן והרצתי אותו עם דוקר פייל הרגיל איך שמתי לב לזה
אתם רואים שהוא פה עושה sdk 22 וב-2000 הזה יש לו notepad++, אתם רואים 2.2.2 זה אומר על לינוקס לעשות ובדוקר פייל הרגיל זה 2.2.2 הרגיל טוב בוא נראה אם הבילד הזה יעבוד לנו ואחרי זה נעשה בילד עם לינוקס ונראה הבדלים עכשיו אני אעשה פאוזה ואנחנו הולכים לחקור את הכל יותר לעומק זה הולך להיות מאוד מעניין
ואם דאטה שימו לב הוא צומח אתם רואים כי הכל קורה בתוך המכונה הווירטואלית עכשיו עוד משהו מעניין שבIPRV בכלי ניהול של מכונות וירטואלית של היפר-וי אנחנו ממש רואים שבמחשב שלי יש מכונה וירטואלית שנקראת דוקר דסקטופ עם שתי ג'יגה ראם אז הבנו שהקליינט שלי מתחבר לסרוויס לסרוור שרץ בתוך מכונה וירטואלית
עכשיו אני כיוזר קצה כמשתמש קצה לא יודע את כל זה ואני מבחינתי עובד ב-CMD הרגיל שלי אני לא יודע לאן הוא שולח הקליינט שלי ה-CMD הרגיל שלי הדוקר EXE שלי לאן הוא שולח את הפקודות אז אני עובד רגיל ואני מקמפל את הדברים שם.
עכשיו, מה זה לא נוח? שאני לא יכול בו זמנית עם הקליינט להיות מחובר לשני סרוויסים, או שאני בסרוויס של מייקרוסופט או שאני בסרוויס של לינוקס.
וזה לא נוח, ועל זה אנחנו נפתור בהמשך. הנה אני רואה שהוא עובד, הנה הוא בנה לנו אותו. עכשיו אני רוצה לעשות לו בילד עוד פעם, רק הפעם לציין לו פייל שנקרא docker file 2000. שיעשה בילד עם אימג' של לינוקס ולזה נקרא לזה נקודתיים ניתן לזה תגיד לינוקס שיעשה לי עוד בילד אחד הפעם זה מ2000 ובגלל זה הוא מושך עוד פעם מההתחלה כי אין לו קאש לזה
ומעניין אותי להשוות גודל שימו לב שזה אותו קוד אנחנו לא משנים שום קוד הקוד של דוטנט עובד גם על לינוקס וגם על ווינדוס בגלל שזה דוטנט קוד פעם היה .NET framework שהיה עובד רק על מייקרוסופט, הם הוציאו גרסה אחרונה 4.8 ואחרי זה הזניחו את ה-framework והלכו ל- .NET Core, וה- .NET Core עובד גם על Windows, גם על לינוקס,
וזה למעשה כמו framework, רק נקי. אני אעשה פאוזה ונמשיך אחרי שהוא יוריד את זה ויעשה בילד עד הסוף. הנה הוא סיים לעשות בילד, שימו לב הוא נותן לי פה אזהרה security burning שבגלל שאני בונה אימג'ים של לינוקס על וינדוס יכול להיות שיש פה יותר מדי הרשאות שחילקנו לקבצים ואנחנו רואים שיש לנו פה אימג' של לינוקס שתופס 170 מגה בייט
שימו לב אתם רואים אותו אימג' על לינוקס על וינדוס שתופס 263 שימו לב זה אותו קוד אותו .NET core רק הבסיס שלו פה זה לינוקס זה 170 מגה וזה 263 זה משמעותי מאוד ואנחנו נעדיף אפילו לעבוד על לינוקס כבסיס, בגלל שזו אותה תוכנה, רק תופסת פחות מקום.
בואו נריץ ונראה שהכל עובד לנו, נעשה docker run, נריץ קונטיינר, איך שנעצור אותו שיימחק, כי אנחנו לא צריכים אותו שירוץ לנו פה, שיימחק איך שאנחנו, אתם יודעים מה שלא יימחק, שיימחק ונעשה אותו disconnected מאחורי הקלעים שירוץ, ואיזה קונטיינר, ניקח את ה-sp.net,
אז זה של מייקרוסופט זה בעצם לייטסט שאפשר לו לכתוב אותו וניתן לזה פורט 8080 ממופה ל-80 פנימה בוא נעשה את זה 81sp.net הנה הוא הוריץ לי את הקונטיינר הזה dockerps הנה הוא עובד ועכשיו אני אעשה 8082 שירוץ לי הקונטיינר הזה לינוקס על 8082 יופי, שני קונטיינרים רצים מאחורי הקלעים, PS אני רואה את שניהם, בואו נבדוק שזה עובד,