PracticU

Linux Container on Server 2019

בלי כתוביותעם כתוביות
PracticU › קורס Docker - עם Swarm Cluster › Linux Container on Server 2019
מילון מושגים:
Linux - מערכת הפעלה בקוד פתוח מבוססת ליבת Linux, נפוצה מאוד בשרתים וקיימת בהפצות רבות כמו Ubuntu.
קונטיינר - חבילה קלה ומבודדת שאורזת אפליקציה עם כל תלויותיה, ורצה באופן אחיד בכל סביבה, למשל ב-Docker.
קרנל - ליבת מערכת ההפעלה, שמנהלת את החומרה, הזיכרון והתהליכים ומתווכת בינם לבין התוכנות.
Hyper-V - טכנולוגיית הווירטואליזציה של מיקרוסופט להרצת מכונות וירטואליות על Windows.
Windows Server - גרסת מערכת ההפעלה Windows המיועדת לשרתים, לניהול רשת, שירותים ומשתמשים בארגון.
Docker - פלטפורמה להרצת אפליקציות בתוך קונטיינרים מבודדים וקלים, כדי שירוצו באופן אחיד בכל סביבה.
JSON - פורמט טקסט קריא לייצוג נתונים מובְנים כזוגות מפתח-ערך, נפוץ להחלפת מידע בין שרת ללקוח.
וירטואליזציה - טכנולוגיה שמאפשרת להריץ כמה מערכות או סביבות מדומות על חומרה פיזית אחת, בבידוד זו מזו.

Linux Container on Server 2019
בהרצאה הזאת מוסבר למה קונטיינרים של Windows צריכים התאמה לקרנל של המחשב, ואיך מבודדים אותם ברמת Hyper-V. בהמשך מוצג איך מריצים קונטיינר של לינוקס על Windows Server 2019.
בידוד ברמת תהליך לעומת Hyper-V
1. התאמת קרנל: בבידוד ברמת תהליך הקונטיינר רץ כתהליך במחשב הפיזי ולכן חייב להתאים לקרנל שלו. ההרצאה מדגימה זאת עם Nano Server בגרסה 1803 שלא רץ על מחשב בגרסה 1809, וההפך.
2. בידוד Hyper-V: מוסיפים לפקודת ההרצה אפשרות isolation=hyperv, והקונטיינר רץ בתוך מכונה וירטואלית קלה ולא תלוי בקרנל המחשב. לשם כך צריך להתקין את Hyper-V ולאתחל את השרת.
3. בדיקת הבידוד: הפקודה docker info מציגה את רמת הבידוד ברירת המחדל, ו-docker inspect על קונטיינר רץ מציג את הבידוד שלו.
קונטיינר לינוקס
1. מצב ניסיוני: כדי להריץ קונטיינרים של לינוקס על Windows Server 2019 צריך להפעיל את המצב הניסיוני של Docker. ההרצאה מציגה שתי דרכים: עריכת הרישום של השירות, והדרך הנקייה שבה יוצרים קובץ daemon.json בתיקיית ProgramData של Docker ומגדירים בו experimental=true.
2. קרנל לינוקס: הקונטיינר צריך קרנל לינוקס לתוך מכונה וירטואלית שמוקמת ב-Hyper-V. מורידים את החבילה המוכנה של הפרויקט מדף ה-Release, מחלצים אותה לתיקייה המתאימה ומריצים את הפקודה.
3. הרצה במקביל: לאחר ההגדרה רצים במקביל קונטיינר של Windows וקונטיינר של לינוקס, כשכל אחד מהם רץ בבידוד שלו.
שימו לב
ההרצאה מציינת שלפני ההתקנה נדרשים כ-8 ג'יגה זיכרון ותמיכה בווירטואליזציה ברמת החומרה. הפיצ'ר של לינוקס על Windows הוא ניסיוני בזמן ההרצאה, ולכן כדאי לבדוק את מצבו בגרסה שמותקנת.
השיעור הבא בקורס: Linux Container on Windows 10

פרקי ההרצאה: Linux Container on Server 2019

  1. 00:00

    הרצת קונטיינר כתהליך והצורך בבידוד

  2. 00:39

    מדוע צריך רמות בידוד שונות

  3. 01:37

    Nano Server והבדל בגרסאות המערכת

  4. 02:37

    שגיאת התאמת הקרנל בין הקונטיינר למחשב

  5. 05:55

    התקנת Hyper-V והרצה מחדש לבידוד

  6. 07:39

    בדיקת הקונטיינר המבודד ב-Hyper-V

  7. 09:51

    ברירת המחדל: בידוד ברמת Process

  8. 12:26

    הרצת לינוקס בתוך Hyper-V (ניסיוני)

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

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

  1. 00:02

    טוב חברים בהרצאה הזאת אנחנו נעשה process isolation בצורה ידנית ונדבר על איך להפעיל מכונה וירטואלית של לינוקס בתוך שרת 2019 ונעשה הכל ידני בעצמנו כדי שנבין איך הכל עובד מאחורי הקלעים בשביל שנצליח אני צריך די הרבה זיכרון שמתי 8 ג'יגה זיכרון ושמתי תמיכה בווירטואליזציה ב-VT ברמת חומרה אז אנחנו עושים את שני הדברים האלו ומפעילים

  2. 00:39

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

  3. 00:56

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

  4. 01:40

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

  5. 02:19

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

  6. 02:31

    טוב, ניתן לו לרדת ונמשיך. והנה עודת השגיאה שרציתי להראות לכם, אני מעריץ נאנו סבע שמונה עשרה אפס שלוש והוא כותב לי שדימון שהשרט לא יכול ליצור איזה The Container Operating System מערכת ההפעלה בתוך ה-Container does not match the Host Operating System למערכת ההפעלה במחשב הפיזי מה זאת אומרת שהבסיס הזה האימג' הזה מתבסס על קרנל שהוא לא במחשב שלי איזה קרנל

  7. 03:03

    במחשב שלי אם נעשה winver נראה שאני שמונה עשרה אפס תשע ואז אם הייתי כותב את זה שמונה עשרה אפס תשע הוא כן היה עובד בואו נראה את זה. כדי לפתור את הבעיה הזאת ש-1803 לא עובד ו-1809 כן עובד אצלי, אני רוצה להריץ את ה-1803.

  8. 03:30

    הנה, אתם רואים, זה עובד עכשיו. ו-Docker ו-PS, אני רואה שיש לי אימייט שעובד. בואו נעשה לזה דוקר סטופ. ראינו שהוא עובד.

  9. 03:44

    אז איך אני פותר את הבעיה הזאת? אז כדי לפתור את הבעיה הזאת, אני רוצה להריץ אותו, את ה-1809 בואו נריץ אותו. עוד פעם, אני אראה לכם מה קורה פה.

  10. 03:59

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

  11. 04:37

    שלי, אוקיי. בגלל הדבר הזה גם לא עובד לי משהו שהוא לא תואם, והשאלה איך פותרים את זה. אז אני אגיד לכם איך לפתור את זה.

  12. 04:50

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

  13. 05:20

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

  14. 06:01

    אז אני מתקין עכשיו Hyper-V כאשר המטרה הסופית שלי היא להריץ את הפקודה הזאת. דוקר run ואני אתיק אותה אפילו הצידה רק כשאני צריך איזה 18.03 כן דוקר run 18.03 נכון זה מה שלא עבד לנו אנחנו מחכים לסיום של ההתקנה ואחרי זה נעשה ריסטארט ואני אמשיך את ההקלטה אני שים אני שם פאוזה בואו ניכנס הוא עשה לנו שני ריסטארטים

  15. 06:42

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

  16. 07:12

    מה, 18.03, כן? זה מה שלא עובד לנו, אנחנו רוצים להוסיף לו Isolation ב-Hyper-V. שימו לב, אני רק הוספתי פה אופציה של Isolation ה-Hyper-V.

  17. 07:37

    הנה, זה עובד לנו. תראו איזה יופי, Host Name, הכל עובד לנו. זה ממש ממש מצוין, מי שרוצה לדעת יש לנו פה את הוורז'ון של הבילד, אתם יכולים פה לראות 10.17.134 ולראות שזה Windows 18.0.3, Docker PS, חצתי PQ דרך אגב, מי שרוצה לדעת איך עשיתי D-Touch, התנתקתי ממנו,

  18. 08:07

    ועכשיו אני עושה Docker Inspect, ועושה Inspect על קונטיינר שרץ, ובה אנחנו יכולים לראות שזה איזוליישן של Hyper-V, אם אני אפעיל פה מכונות וירטואליות של Hyper-V בממשק אני אראה שזה קיים אבל אין אף מכונה וירטואלית כי Hyper-V מחביא את זה ממני ואנחנו יכולים לעשות פה קופי לפקודה מסוימת שתחשוף לי עדיין את המכונה הזאת.

  19. 08:53

    hcd-hug list מראה לי שיש לי פה Hyper-V container running הנה זה הקונטיינר שעובד אצלי ככה אני רואה שמאחורי מהקלעים יש לי בעצם קונטיינר שעובד ואם אני אעשה לו סטופ אז הוא יעבור לסטופ ואם אני עושה דוקר ps-a יש לי פה עוד אחד אני אעשה לו rm זה מהסרטים הקודמים שעשינו איתכם europea ps-a זהו אין לי כלום מה זה ps-a מראה לי גם קונטיינרים שהם במצב

  20. 09:38

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

  21. 10:15

    זה ברמת הפרוצס זה אומר by default הוא מבודד את זה ברמת הפרוצס מה זה אומר שזה by default מבודד ברמת הפרוצס שאם אני אכתוב פקודה הזאת 1803 בלי מילה isolation Hyper-V אלא פשוט אני אעשה Enter זה לא יעבוד לי העדיפות שלו זה process מה כן יעבוד לי הגרסה

  22. 10:41

    הנוכחית שלי מה הגרסה 1903 לא מה שהייתה הגרסה הנוכחית שלי אני כבר שכחתי מה הייתה הגרסה שלי בואו נעשה win var ונראה או פשוט var או win var אין לו var כי זה לא דוסק ש-1809 אצלי אז אם אני אעשה איפה הפקודה שלנו עכשיו 1809 שימו לב אני יכול להריץ אותו גם ב-hyper-v ואני יכול להריץ אותו גם בלי ה-hyper-v בואו תראו ב-hyper-v זה לוקח זמן ויותר משאבים כי הוא

  23. 11:19

    בונה לי מכונה וירטואלית הנה אנחנו בתוך מכונה וירטואלית אבל אני יכול גם 1809 שלי להריץ אותו כ-process שזה ה-default אומרים שזה הרבה יותר מהר שמתם לב שמתם לב שזה הרבה יותר מהר שימו לב process 1 2 הופה מוכן וIPRV, 1, 2, 3, אתם רואים? זה יותר זמן.

  24. 11:53

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

  25. 12:13

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

  26. 12:32

    ואני חושב, רגע, אם זה ה-Hyper-V, מה אכפת לו אם זה Windows או לינוקס? זה הרי כבר מכונה וירטואלית נפרדת. בואו נריץ אימייץ' של אובנט או של איזה לינוקס קטן יותר שנקרא Alpine, שהוא כולה 5 מגה, אובנט הוא קצת גדול, ואנחנו עושים Alpine,

  27. 12:49

    והוא אומר, אין לנו התאמה לווינדוס AMD 64 ביט, הבנתם? זאת אומרת שלמרות שזה היפר וי הוא אומר תקשיב אין לי לזה התאמה.

  28. 13:05

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

  29. 13:24

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

  30. 14:12

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

  31. 14:28

    מריץ אותו עוד פעם הפעם מ-cmd שיהיה אקספרימנטל איך כותבים אקספרימנטל

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

ההרצאה הקודמת: Dockerfile Multi-Stage

ההרצאה הבאה: Linux Container on Windows 10

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

  • container
  • Server Transaction
  • Linux VM on Google Cloud
  • התקנה של linux על 10 Windows

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

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