
הטקסט המלא של הדקות הראשונות בהרצאה «הבדלים בין Container לבין מכונה וירטואלית» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, ברוכים הבאים להרצאה על קונטיינרים. אנחנו נלמד על Windows קונטיינרס, על Linux קונטיינרס, אבל בעיקר על Windows, למה?
כי זה חלק מהמבחן של MCSA. כמו שאתם יכולים לראות באתר של מייקרוסופט, הם נותנים לזה 10% מהמבחן, וזה נושא מאוד חשוב ומאוד חם היום. ואנחנו נלמד ונעשה ונבין מה זה קונטיינרים.
והכי חשוב להבין מה ההבדל בין קונטיינר למכונה וירטואלית. האמת שהם מאוד מאוד מאוד דומים וקונטיינר זה מכונה וירטואלית בלי מערכת ההפעלה במקום שתהיה בכל מכונה וירטואלית מערכת הפעלה נפרדת כמו שאתם יכולים לראות בצד ימין מכונה וירטואלית A יש לה מערכת הפעלה
משלה מכונה וירטואלית שנייה יש לה מערכת הפעלה אותו דבר כמו הראשונה אבל יש להם כבר שתי מכונות וירטואליות עם אותה מערכת הפעלה בדיוק ואם יש לנו 100 מכונות וירטואליות יהיה לנו 100 פעמים אותו Windows או אותו לינוקס במקום זה חבר'ה של קונטיינרים שזה היה כבר יותר מעשור בלינוקס לפני עשור
בלינוקס אמרו בשביל מה להתקין כל פעם אותה מערכת הפעלה בכל מכונה וירטואלית בואו נתקין אחת משותפת בווינדוס וכל פעם שצריך נבקש ממנו שירות של מערכת ההפעלה מה זה שירות של מערכת ההפעלה זה לדוגמה לשמור קובץ בארדיסק להדפיס משהו במדפסת להציג משהו במסך לשלוח משהו ברשת, כל מה שקשור לפעולות עם חומרה, לשים משהו בזיכרון, לחבר כמה מספרים,
כל הפעולות האלו שאתה מבקש מחומרה לבצע, זה נקרא בעצם פנייה למערכת ההפעלה שהיא מנהלת את החומרה הפיזית. זה הבוס שמנהל את החומרה הפיזית, כולל זמן מעבד, מי מקבל כמה זמן מעבד, גם היא מנהלת את זה.
אז אם אתה רוצה לשים קובץ בארדיסק, אתה חייב לבקש ממערכת ההפעלה שתעשה את זה בפועל, והיא אחראית ששניים בו זמנית לא ייגשו לאותו קובץ בטעות. אז כל פעם שתוכנה A רוצה לעשות משהו בעולם הפיזי, לדוגמה לשלוח משהו ברשת, בכרטיס רשת, היא פונה למערכת ההפעלה.
אבל במקום שהיא תפנה למערכת ההפעלה משלה והיא תפנה למערכת ההפעלה האמיתית, הם כולם בנושא של קונטיינרים פונים למערכת ההפעלה האחת והיחידה שיש.
אז אם אתם שואלים אותי מה זה קונטיינר, זה מכונה וירטואלית ללא מערכת ההפעלה, או במילים אחרות, מכונה וירטואלית שמנצלת מערכת הפעלה שיש במחשב הפיזי ואין לה מערכת הפעלה משלה.
אז מה יש לנו במקום מערכת ההפעלה? בעצם מה נשאר לנו? נשארים לנו הקבצים של האפליקציה, הקבצים של האתר אינטרנט שלנו, הקבצים של אתר ווב, הקבצים של אפאצ'י, הקבצים של איי-אס.
זאת אומרת, אנחנו מביאים רק את הקבצים של האפליקציה שאנחנו רוצים, של התוכנה שאנחנו רוצים, פשוט חוסכים את הגודל, את הנפח, את הזמן של המערכת ההפעלה הגולמית כביכול.
עכשיו, הקבצים האלו שיש לנו באפליקציה, נורא קל להעתיק אותם. יש, שתבינו, קונטיינרים בגודל של 5 מגה, לא ג'יגה, מגה, 5 מגה, זה כלום 5 מגה, כן? אז הרעיון שזה חוסך לנו את המערכת ההפעלה הפיזית.
שזה חוסך לנו בעצם משאבים בלהעתיק ממקום למקום את אותם הקבצים של הווינדוס, ואם אני מעתיק מכונה וירטואלית שבנויה בטכנולוגיה של קונטיינר, או שאנחנו לא נגיד את זה במילים כאלו מבלבלות, נגיד שזה קונטיינר, אנחנו נעתיק קונטיינר כזה, הוא יהיה נורא קטן, רק את מה שאני צריך.
הקבצים האלו בתוך הקונטיינר מתחלקים בעצם לשני סוגים, כמו כל הקבצים של כל התוכנות מתחלקות לשני סוגים. בואו תראו, אם אנחנו נראה בעצם כל אפליקציה יש לה את הקבצים הייחודיים שלה ויש לה את ה-DLLים שזה ליברריס, ספריות משותפות או קבצי בין בלינוקס או ליברריס או DLLים זה גם נקרא DLLים כמו
.NET כמו Java זה קבצים שמשותפים להמון המון תוכנות להמון המון אפליקציות. אז כל תוכנה יש לה את הקבצים הייחודיים שלה ויש את הספריות ה-DLL'ים שמשותפים להמון המון תוכנות.
וכדי שתוכנה לדוגמת תעבוד היא צריכה גם את הקבצים שלה, גם את ה-DLL'ים המשותפים שמקלים על המתכנת. זה כלים שמשתמשים בהם המון המון פעמים בכל מיני תוכנות, אז שמים אותם בספרייה נפרדת וכל תוכנה שצריכה שולפת את זה מהספרייה המשותפת.
זה נקרא DLL'ים המשותפים. לדוגמה בפרקטיקיו יש לנו DLL משלנו, כל מיני כלים שאנחנו משתמשים בו בכל מיני תוכנות שיש לנו לדוגמה dll שבודק תקשורת אז אנחנו מנצלים אותו בכמה תוכנות קטנות שיש לנו יש dll יותר נפוצים מאשר ה dll שאנחנו עשינו לעצמנו לדוגמה .NET או Java או כל מיני office dll של office שהם משותפים לword ול-excel
יש להם גם כן dll משותפים אז הדל"לים המשותפים האלו הולכים ביחד עם האפליקציה בקונטיינר. זאת אומרת קונטיינר כולל גם את התוכנה וגם את הדל"לים, מהעולם החיצון הם צריכים אך ורק פניות למערכת ההפעלה. זה אומר אך ורק פניות לעולם הפיזי.
כל הקבצים נמצאים בתוך הקונטיינר שהאפליקציה צריכה. אין שום תלות בקובץ חיצוני. מה שכן, יש תלות במערכת ההפעלה החיצונית. עכשיו, וזה מאוד מאוד חשוב להבין.
למה? כי קודם כל אי אפשר להעביר מכונה וירטואלית של ווינדוס ללינוקס ולינוקס לווינדוס. אי אפשר. במכונה וירטואלית רגילה כן, זה אפשרי, בקונטיינר זה בלתי אפשרי.
למה? כי הוא חייב את המערכת ההפעלה שתהיה זהה במה שכתבו אותו. אם עשו מכונה וירטואלית, אם עשו קונטיינר בלינוקס, הוא יעבוד רק על לינוקס.
אם עשו קונטיינר בווינדוס, הוא יעבוד רק בווינדוס. הוא חייב אותו קרנל. לעומת זאת במכונה וירטואלית הקלאסית אני יכול להעתיק אותה יחד עם מערכת ההפעלה לכל מקום ומקום.
זאת אומרת מכונה וירטואלית של לינוקס יכולה לעבוד גם על לינוקס וגם על ווינדוס. אז פה אנחנו מאוד מאוד תלויים בגרסה של מערכת ההפעלה אבל לא תלויים בקבצים.
עוד פעם קונטיינר מאוד תלוי במערכת ההפעלה אבל לא תלוי בקבצים כי יש לו את כל הקבצים משלו כולל הDLLים המשותפים וזה ההבדל בינו לבין אפליקציות ניידות אתם יודעים מה זה אפליקציה ניידת?
שמגיעים עם USB כזה והיא מופעלת בכל מקום וכאילו עברה התקנה. מי שלא מכיר את זה, אני אספר לו בשני מילים, לוקחים Windows נקי, סורקים אותו עם תוכנה מיוחדת כמו APPV, כמו Vimware Thin App של Vimware, ויש עוד הרבה תוכנות שסורקות את ה-Windows לפני ההתקנה.
אחרי זה אנחנו מתקינים איזושהי אפליקציה, מתקינים לה כל מיני הגדרות, מקנפיגים אותה איך שאנחנו אוהבים, אחרי שסיימנו לעשות את הכל אנחנו שוחקים אחרי ואת כל ההפרש שהיה לפני ואחרי, את כל הקבצים שהשתנו ואת כל הרג'יסטרי שהשתנו שמים בקובץ אחד וקוראים לזה אפליקציה ניידת ואז כל מקום שאנחנו נגיע אנחנו נוכל להפעיל אותה כי לפני ההפעלה
המערכת הווירטואלית תעשה לאפליקציה כאילו כל הקבצים שלה כבר מותקנים בהארדיסק למרות שהם בכלל לא מותקנים היא עושה לה כאילו כמו דרייבר כזה בגישה להארדיסק היתרון של אפליקציה ניידת שאין התנגשות בין הגרסאות היא לא תלויה בכלום מכניסים אפליקציה ניידת ואפשר להפעיל אותה בכל מקום זה למעשה כל הקבצים
שהיא צריכה מגיעים איתה שזה דומה מאוד לקונטיינר אם אתם תשאלו אותי קונטיינר דומה יותר לאפליקציה ניידת מאשר למכונה וירטואלית בעצם זאת תוכנה ניידת מה ההבדל בכל זאת בין אפליקציה לקונטיינר שבאפליקציה ניידת אם היה .NET כבר מותקן במחשב הפיזי וסרקנו אותה אחרי שהיה לנו .NET מותקן הדלתא הזה ההפרש הזה
הוא לא יכלול לדוגמה את ה-dotnet הוא לא יכלול את ה-Java זאת אומרת יהיו רק קבצים של אפליקציה ותהיה תלות בקבצים הפיזיים במחשב היעד שיש שם מראש כבר מותקן אז אפליקציה ניידת יש לה תלות בקבצים חיצוניים הם מצלמים רק את ההפרש לעומת זאת בקונטיינר אין גישה אין שום גישה לקבצים חיצוניים רק לקבצים שיש בתוך הקונטיינר
אלא אם כן עשינו איזושהי תיקיה משותפת בכוונה איזשהו ווליום משותף זה ההבדל הראשון ההבדל השני שאין גוי אין ממשק גרפי