PracticU

container

בלי כתוביותעם כתוביות
PracticU › קורס לינוקס למתקדמים - הסמכה בינלאומית - Linux - Red Hat - RHCSA / RHCE › container
מילון מושגים:
קונטיינר - חבילה קלה ומבודדת שאורזת אפליקציה עם כל תלויותיה, ורצה באופן אחיד בכל סביבה, למשל ב-Docker.
Ubuntu - הפצת Linux נפוצה וידידותית למשתמש, המשמשת בשרתים ובמחשבים אישיים.
CentOS - הפצת Linux ארגונית חינמית שהתבססה על Red Hat Enterprise Linux ושימשה נפוצות בשרתים.
מערכת הפעלה - התוכנה הבסיסית שמנהלת את חומרת המחשב ומשאביו ומריצה את שאר התוכנות, למשל Windows או Linux.
Docker - פלטפורמה להרצת אפליקציות בתוך קונטיינרים מבודדים וקלים, כדי שירוצו באופן אחיד בכל סביבה.
מעבד - יחידת העיבוד המרכזית של המחשב, שמבצעת את הפקודות של התוכניות ומנהלת את החישובים.
SELinux - מנגנון אבטחה ב-Linux שאוכף מדיניות בקרת גישה מחמירה על תהליכים וקבצים.
Docker Image - תבנית לקריאה בלבד שמכילה אפליקציה ותלויותיה, וממנה מריצים קונטיינרים ב-Docker.

container
מה הבעיה שקונטיינרים באים לפתור, ומה ההבדל בינם לבין מכונה וירטואלית? בשיעור מוסבר מה הקונטיינר מכיל, ומודגמת הרצה של קונטיינר Ubuntu על שרת CentOS.
הבעיות שהקונטיינרים פותרים
1. אריזה: קונטיינר מכיל את האפליקציה יחד עם הספריות והתשתית שהיא צריכה, כך שההפעלה שלה נוחה למפעיל ולמשתמש.
2. סקיילביליות: אפשר לשכפל קונטיינר במהירות, או להפעיל מופעים נוספים של אותה אפליקציה, במקום להקים מכונות חדשות.
3. תקורה וביצועים: במכונה וירטואלית יש שכבות נוספות של מערכת הפעלה, היפרוויזור וניהול. בקונטיינר האפליקציה רצה ישירות על מערכת ההפעלה של המארח, לכן התקורה קטנה והביצועים קרובים לברזל חשוף.
4. אבטחה: יש פחות רכיבים לעדכן ולאבטח, ולכן האפקטיביות של הפתרון עולה.
איך זה עובד
1. טכנולוגיות הליבה: Docker מנהל את הקונטיינרים. Control Groups שולטים בכמות ה-CPU וה-IO שכל קונטיינר רשאי לצרוך. Namespaces מבודדים את הקונטיינר, כך שהוא לא רואה תהליכים או קבצים שאינם שלו. SELinux עוטף את הקונטיינר ומונע מעבר למקומות אחרים גם במקרה של פריצה.
2. השוואה למכונה וירטואלית: במכונה וירטואלית יש חומרה, היפרוויזור, מערכת הפעלה מלאה בתוך המכונה, ורק אחר כך הספריות והאפליקציה. בקונטיינר אין מערכת הפעלה נוספת ואין היפרוויזור.
3. הדגמה: על שרת CentOS מריצים קונטיינר של Ubuntu, עם הספריות והמבנה של Ubuntu. הקונטיינר מקבל כרטיס רשת משלו מתוך הרשת 172.17.0.x של docker0.
פקודות והגדרות
- docker ps -a מציג את כל הקונטיינרים, כולל אלה שאינם פעילים.
- docker start <name> מפעיל קונטיינר קיים, ו-docker stop <name> עוצר אותו.
- docker run -i -t <image> פותח קונטיינר אינטראקטיבי מתוך אימג'.
טעויות נפוצות
קונטיינר שיוצאים ממנו נעצר, כי הוא קיים רק כל עוד התהליך הראשי שלו רץ. לכן docker ps מציג רק קונטיינרים פעילים, ו-docker ps -a מציג גם את אלה שיצאו.
הדוגמה החשובה ביותר: בתוך הקונטיינר הפקודה ps -ef הציגה רק שני תהליכים, ואילו על השרת המארח רואים את כל התהליכים. זו ההפרדה ש-namespaces יוצרים.
בשלב הבא אפשר לעבור להתקנה ולניהול של Docker עצמו.
השיעור הבא בקורס: docker
לחץ כאן להורדת הורדת קבצי Script של לינוקס שהיו בסרטים
מילון מושגים:
דיסק - התקן לאחסון קבוע של נתונים, כמו כונן קשיח (HDD) או כונן מבוסס זיכרון מהיר (SSD).
תיקייה - מכל במערכת הקבצים שמשמש לארגון קבצים ותיקיות אחרות בתוך מבנה היררכי.
מחיצה - חלוקה לוגית של דיסק פיזי לאזורים נפרדים, שכל אחד מתפקד כאילו הוא כונן עצמאי.
זיכרון - רכיב מהיר ונדיף שבו המחשב שומר נתונים ותוכניות בזמן ריצתם. תוכנו נמחק עם כיבוי המחשב.
דומיין - תחום ניהולי משותף של מחשבים ומשתמשים ברשת ארגונית, המנוהל מרכזית. גם שם ייחודי של אתר באינטרנט.
אימות - תהליך שמוודא שהמשתמש או המערכת הם מי שהם טוענים שהם, בדרך כלל באמצעות סיסמה, קוד או תעודה.
Active Directory - שירות מדריך של מיקרוסופט לניהול מרכזי של משתמשים, מחשבים והרשאות ברשת ארגונית מבוססת דומיין.
GPO - אובייקט מדיניות קבוצתית ב-Active Directory, שמכיל הגדרות ומדיניות המוחלות על משתמשים ומחשבים.


מבנה ושמות דיסקים ומחיצות בלינוקס:


(Sda (disk0): זה הדיסק הפיזי הראשון (SATA DISK)

(Sda1,Sda2 (Partitions in disk): אלו הן המחיצות בתוך הדיסק הפיזי הראשון.

(Sdb (disk1): זה הדיסק הפיזי השני כמו בוינדוס Disk1

(Sdb1,Sdb2 (Partitions in disk): אלו הן המחיצות בתוך הדיסק הפיזי השני.

מחיצת השורש הראשונה:

וינדוס: C

לינוקס: /

מחיצות נוספות:

וינדוס: D: / E:

לינוקס: /data /example כמו תיקיות.

הערה: בתהליך ההתקנה יוצרים מחיצה נוספת לזיכרון הווירטואלי שנקראת SWAP

מטרת צירוף לינוקס לדומיין הינה לאימות משתמשים מתוך Active Directory בלבד ואין GPO  ללינוקס דרך AD.


הוכן ע"י התלמיד המצטיין: אברהים אבו שיכה

פרקי ההרצאה: container

  1. 00:00

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

  2. 00:58

    סקלביליות והעומס על התשתית

  3. 01:55

    קונטיינר כאריזה של אפליקציה וספריות

  4. 03:55

    טכנולוגיות Docker, Control Groups ו-Namespace

  5. 04:51

    השוואה בין קונטיינר לווירטואליזציה

  6. 07:01

    הרצת קונטיינר קיים עם docker ps

  7. 07:58

    הפעלה, בדיקה ועצירה של הקונטיינר

  8. 09:56

    אימג'ים: מה נארז בתוך הקונטיינר

תמלול ההרצאה: container

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

  1. 00:02

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

  2. 00:11

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

  3. 00:21

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

  4. 00:35

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

  5. 00:58

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

  6. 01:17

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

  7. 01:41

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

  8. 01:58

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

  9. 02:20

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

  10. 02:41

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

  11. 03:09

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

  12. 03:24

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

  13. 03:51

    רצה ממש ישירות על מערכת ההפעלה אז איזה טכנולוגיות בעצם מאפשרות פעם אחת ניהול קונטיינרים כמו דוקר למשל שזמינה ברדט אנטרפרייז לינוקס 7 או בסנטו S7 ומנגנון ה-Control Groups אשר בעצם מפקח על הביצועים, על מה מותר לאותו קונטיינר לעשות, כמה ביצועים מותר לו לצרוך ברמת ה-CPU, ברמת ה-IO ומבחינת שאר

  14. 04:23

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

  15. 04:48

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

  16. 05:09

    בואו נתחיל מהסביבה של הווירטואליזציה. יש לנו את החומרה, יש לנו את המערכת ההפעלה או בעצם את מנגנון הניהול של הווירטואליזציה, יש לנו את ה-Hypervisor שזה אותו רכיב שמאפשר לנו להריץ מכונות וירטואליות אם זה המנגנון הפנימי של VMware או אם זה המנגנון הפנימי של KVM או כל רכיב אחר, מעל זה יש לנו מכונות וירטואליות,

  17. 05:36

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

  18. 05:58

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

  19. 06:20

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

  20. 06:49

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

  21. 07:10

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

  22. 07:32

    אני מריץ את הפקודה docker ps -a כדי להראות את כל הקונטיינרים שקיימים במערכת. כרגע קיים לי קונטיינר אחד, הנה קצת הגדלתי את החלון בשביל שאפשר לראות את כל הפרמטרים.

  23. 07:46

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

  24. 08:04

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

  25. 08:21

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

  26. 08:38

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

  27. 08:55

    טעות קטנה בפקודה, curl, כן? והנה אני רואה פלט של עמוד ה-web של ה-url הזה, שאומר שה-web page הזה הגיע מתוך הקונטיינר. עכשיו, לצורך הדגמה אני הולך להראות לכם איך עוצרים קונטיינר, עושים את זה בעזרת הפקודה docker stop ואז את השם של הקונטיינר.

  28. 09:26

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

  29. 09:44

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

  30. 10:21

    את כל האפליקציה ואת הליבריז שלה אורזים בתוך משהו שנקרא אימג'. אני יכול לראות איזה אימג'ים כרגע מותקנים לי במערכת על ידי הרצאת הפקודה docker image וכאן אני רואה אימג' של ה-Web Container

לקורס המלא: קורס לינוקס מתקדם אונליין

ההרצאה הקודמת: Red Hat 7 - Firewall Zones

ההרצאה הבאה: docker

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

  • הרצה ראשונה של Container
  • לולאת Sequence Container ב-SSIS
  • דיבאג קונטיינר - Debug Container

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

  • קורס AWS - ניהול מכונה וירטואלית בענן
  • קורס Terraform - DevOps - Azure & AWS
  • קורס קוברנטיקס - Kubernetes
  • קורס Docker - עם Swarm Cluster
  • קורס DevOps - Ansible
  • קורס PowerShell