
docker info מציגה את רמת הבידוד ברירת המחדל, ו-docker inspect על קונטיינר רץ מציג את הבידוד שלו.הטקסט המלא של הדקות הראשונות בהרצאה «Linux Container on Server 2019» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
טוב חברים בהרצאה הזאת אנחנו נעשה process isolation בצורה ידנית ונדבר על איך להפעיל מכונה וירטואלית של לינוקס בתוך שרת 2019 ונעשה הכל ידני בעצמנו כדי שנבין איך הכל עובד מאחורי הקלעים בשביל שנצליח אני צריך די הרבה זיכרון שמתי 8 ג'יגה זיכרון ושמתי תמיכה בווירטואליזציה ב-VT ברמת חומרה אז אנחנו עושים את שני הדברים האלו ומפעילים
את המכונה הווירטואלית שזה כאילו השארת הפיזי שלי. אנחנו נתחיל מזה שנבין מה הצורך האמיתי שלי, למה אני צריך רמת בידוד שונה.
אנחנו נתחיל מזה שנבין למה צריך רמות בידוד שונות, למה צריך איזוליישן לבלים שונים. אז נתחיל מזה שנעשה דוגמה, יש לנו כרגע דוקר רגיל שמותקן בווינדוס, אנחנו יכולים לעשות docker version ולראות שיש לנו docker רגיל שעובד הדוגמה שלי היא כזאת אני עושה docker run ואני מפעיל קונטיינר חדש עכשיו אני אעשה stop שיימחק שיהיה אינטראקטיבי
ושיהיה נניח אני רוצה שיהיה nano server 1803 אוקיי הנה אני מפעיל פשוט cmd של nano server 1803 ניתן לו לרוץ אני מזכיר לכם שנאנו סרבר זה כמו ווינדוס סרבר, רק מקוצץ כמה שיותר, אין בו גוי, אין בו כלום, הכי הכי קטן שרק אפשר, רק כדי להריץ עליו אפליקציות, זה אימג' בייס כזה, מאוד קטן, מאוד מצומצם,
בלינוקס זה 5 מגה בייט, בווינדוס, אתם תכף תראו, זה מאות מגות, אבל עדיין זה לא עשרות ג'יגות כמו ווינדוס רגיל.
טוב, ניתן לו לרדת ונמשיך. והנה עודת השגיאה שרציתי להראות לכם, אני מעריץ נאנו סבע שמונה עשרה אפס שלוש והוא כותב לי שדימון שהשרט לא יכול ליצור איזה The Container Operating System מערכת ההפעלה בתוך ה-Container does not match the Host Operating System למערכת ההפעלה במחשב הפיזי מה זאת אומרת שהבסיס הזה האימג' הזה מתבסס על קרנל שהוא לא במחשב שלי איזה קרנל
במחשב שלי אם נעשה winver נראה שאני שמונה עשרה אפס תשע ואז אם הייתי כותב את זה שמונה עשרה אפס תשע הוא כן היה עובד בואו נראה את זה. כדי לפתור את הבעיה הזאת ש-1803 לא עובד ו-1809 כן עובד אצלי, אני רוצה להריץ את ה-1803.
הנה, אתם רואים, זה עובד עכשיו. ו-Docker ו-PS, אני רואה שיש לי אימייט שעובד. בואו נעשה לזה דוקר סטופ. ראינו שהוא עובד.
אז איך אני פותר את הבעיה הזאת? אז כדי לפתור את הבעיה הזאת, אני רוצה להריץ אותו, את ה-1809 בואו נריץ אותו. עוד פעם, אני אראה לכם מה קורה פה.
פוסט נעים, רק כדי להראות לכם שאנחנו פה בפנים. docker ps, docker inspect, inspect זה לנתח את הקונטיינר שרץ, ואני רוצה להראות לכם פה ש-isolation ברמת הפרוצס, זה אומר שזה קונטיינר שרץ אצלי על המחשב כפרוצס, כתהליך בתוך המחשב, ובגלל שהוא רץ אצלי כתהליך בתוך המחשב, חייבים שהקרנל שלו יהיה תואם לקרנל של הווינדוס
שלי, אוקיי. בגלל הדבר הזה גם לא עובד לי משהו שהוא לא תואם, והשאלה איך פותרים את זה. אז אני אגיד לכם איך לפתור את זה.
צריך לעשות בידוד לא ברמת הקרנל, אלא ברמת ה-IPERV, זאת אומרת, להוסיף לו פה פקודה שאומרת שמינוס מינוס איזוליישן, בוא נוסיף את זה נניח פה, מינוס מינוס איזוליישן שווה היפר V איזוליישן ואז ברגע שאני אריץ את זה הוא יקים מכונה וירטואלית
ברזל פיזי נפרד עבור הנאנו סרבר בואו נראה וזה לא עובד למה זה לא עובד כי אין לי היפר V ולכן אני נכנס לשרת ומתקין את ההיפר V אני עושה אנטר אנטר אנטר מגיע פה להיפר V עושה אנטר היפר V אנטר נקסט משאיר הכל ברירת מחדל לא לא משנה כלום ועושה ריסטארט אם צריך ואינסטול.
אז אני מתקין עכשיו Hyper-V כאשר המטרה הסופית שלי היא להריץ את הפקודה הזאת. דוקר run ואני אתיק אותה אפילו הצידה רק כשאני צריך איזה 18.03 כן דוקר run 18.03 נכון זה מה שלא עבד לנו אנחנו מחכים לסיום של ההתקנה ואחרי זה נעשה ריסטארט ואני אמשיך את ההקלטה אני שים אני שם פאוזה בואו ניכנס הוא עשה לנו שני ריסטארטים
כשהוא מפעיל ה-Hyper-V הוא צריך לעשות שני ריסט-אבטים. אנחנו חזרנו חזרה, הדבר הזה סיים, ואנחנו רצים עכשיו להריץ את הפקודה הזאת שלא עבדה לנו, אתם זוכרים?
מה, 18.03, כן? זה מה שלא עובד לנו, אנחנו רוצים להוסיף לו Isolation ב-Hyper-V. שימו לב, אני רק הוספתי פה אופציה של Isolation ה-Hyper-V.
הנה, זה עובד לנו. תראו איזה יופי, Host Name, הכל עובד לנו. זה ממש ממש מצוין, מי שרוצה לדעת יש לנו פה את הוורז'ון של הבילד, אתם יכולים פה לראות 10.17.134 ולראות שזה Windows 18.0.3, Docker PS, חצתי PQ דרך אגב, מי שרוצה לדעת איך עשיתי D-Touch, התנתקתי ממנו,
ועכשיו אני עושה Docker Inspect, ועושה Inspect על קונטיינר שרץ, ובה אנחנו יכולים לראות שזה איזוליישן של Hyper-V, אם אני אפעיל פה מכונות וירטואליות של Hyper-V בממשק אני אראה שזה קיים אבל אין אף מכונה וירטואלית כי Hyper-V מחביא את זה ממני ואנחנו יכולים לעשות פה קופי לפקודה מסוימת שתחשוף לי עדיין את המכונה הזאת.
hcd-hug list מראה לי שיש לי פה Hyper-V container running הנה זה הקונטיינר שעובד אצלי ככה אני רואה שמאחורי מהקלעים יש לי בעצם קונטיינר שעובד ואם אני אעשה לו סטופ אז הוא יעבור לסטופ ואם אני עושה דוקר ps-a יש לי פה עוד אחד אני אעשה לו rm זה מהסרטים הקודמים שעשינו איתכם europea ps-a זהו אין לי כלום מה זה ps-a מראה לי גם קונטיינרים שהם במצב
סטופ אקסיט וזהו עכשיו אחרי שעשינו את זה אתם רואים אין לנו אף קונטיינר בתוך vm אז נהדר חבר'ה אנחנו יכולים להריץ עכשיו כל קונטיינר גם במצב רגיל וגם במצב IPRV. אם אני אעשה דוקר אינפו אתם תראו שבדוקר אינפו יש לי מידע מפורט ומה שמעניין אותי זה default isolation level ואתם רואים שdefault isolation level
זה ברמת הפרוצס זה אומר by default הוא מבודד את זה ברמת הפרוצס מה זה אומר שזה by default מבודד ברמת הפרוצס שאם אני אכתוב פקודה הזאת 1803 בלי מילה isolation Hyper-V אלא פשוט אני אעשה Enter זה לא יעבוד לי העדיפות שלו זה process מה כן יעבוד לי הגרסה
הנוכחית שלי מה הגרסה 1903 לא מה שהייתה הגרסה הנוכחית שלי אני כבר שכחתי מה הייתה הגרסה שלי בואו נעשה win var ונראה או פשוט var או win var אין לו var כי זה לא דוסק ש-1809 אצלי אז אם אני אעשה איפה הפקודה שלנו עכשיו 1809 שימו לב אני יכול להריץ אותו גם ב-hyper-v ואני יכול להריץ אותו גם בלי ה-hyper-v בואו תראו ב-hyper-v זה לוקח זמן ויותר משאבים כי הוא
בונה לי מכונה וירטואלית הנה אנחנו בתוך מכונה וירטואלית אבל אני יכול גם 1809 שלי להריץ אותו כ-process שזה ה-default אומרים שזה הרבה יותר מהר שמתם לב שמתם לב שזה הרבה יותר מהר שימו לב process 1 2 הופה מוכן וIPRV, 1, 2, 3, אתם רואים? זה יותר זמן.
אוקיי, טוב, הבנו את זה. אז הבנו שזה עובד לנו וזה מצוין ואנחנו מאוד שמחים. ועכשיו יש לי רק שאלה קטנה. בואו נעשה להכל סטופ, דוקר סטופ, ונעביר לדוקר סטופ את כל המכונות, את כל ה-IDים של כל המכונות.
מה שבדולר סוגריים מתבצע קודם, פקודה מתבצעת קודם והתוצאה שלה עוברת לפקודה דוקר סטופ. יופי, אז יש לנו עכשיו PS-A, אין לנו כלום, הכל נקי. חבר'ה, למדנו מה זה לבודד תהליך בתוך ה-Hyper-V.
ואני חושב, רגע, אם זה ה-Hyper-V, מה אכפת לו אם זה Windows או לינוקס? זה הרי כבר מכונה וירטואלית נפרדת. בואו נריץ אימייץ' של אובנט או של איזה לינוקס קטן יותר שנקרא Alpine, שהוא כולה 5 מגה, אובנט הוא קצת גדול, ואנחנו עושים Alpine,
והוא אומר, אין לנו התאמה לווינדוס AMD 64 ביט, הבנתם? זאת אומרת שלמרות שזה היפר וי הוא אומר תקשיב אין לי לזה התאמה.
אבל אני אספר לכם סוד, יש פיצ'ר חדש שמאפשר בו זמנית להריץ את הווינדוס ומייקרוסופט בו זמנית על אותה מכונה. אבל הפיצ'ר הזה הוא עדיין לא סופי, הוא באקספרימנטל, הוא עדיין פיצ'ר ניסיוני.
אם אני אכנס לסרוויסס, סרוויסס ואת הפרוצס של דוקר אני אעריץ אותו עם אופציה של מינוס אקספרימנטל אז בדוקר ורז'ן אני אקבל פה שברמת השרת אקספרימנטל יהיה true ואז אפשר יהיה להריץ גם לינוקס בתוך היפר וי הבנתם אני אנצל את הבידוד הזה בשביל להריץ אימג'ים של לינוקס בתוך השרת שלי בואו נעשה את זה איך אני מכניס לפה משהו שיהיה מינוס אקספרימנטל
צריך להריץ את הדוקר d הזה ידנית אז בוא נעשה סטופ ניקח את הדבר הזה ניקח את הדבר הזה נעשה קונטרול l שיהיה לנו יפה קונטרול l הוא לא רוצה מינוס מינוס אקספרימנטל איך כותבים אקספרימנטל הזה ככה כותבים אותו בוא נראה שאנחנו מפעילים עכשיו סרוויס שימו לב עשיתי לו סטופ שלא תהיה התנגשות הוא במצב סטופ עשה רפרש נראה שהוא בסטופ ועכשיו אני
מריץ אותו עוד פעם הפעם מ-cmd שיהיה אקספרימנטל איך כותבים אקספרימנטל