
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 יוצרים.מבנה ושמות דיסקים ומחיצות בלינוקס:

הטקסט המלא של הדקות הראשונות בהרצאה «container» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום וברוכים הבאים לוידאו בנושא קונטיינרים בלינוקס. בוידאו הזה אני הולך להסביר לכם מה זה הקונטיינרים ואיזה בעיות הם הולכים לפתור.
אנחנו הולכים לראות דוגמה של איך מריצים קונטיינר ממש במערכת ההפעלה. אני הולך להשתמש בסנטו S6 כדי להריץ את הקונטיינר.
לאחר מכן אנחנו עומדים בעצם לפתוח את מכסה המנוע ולראות איך הקונטיינר מורכב ומה יש בתוכו בפנים, מה אפליקציה יכולה לעשות. ואיזה תשתיות עומדות לרשותה.
אז קודם כל, בעצם, למה קונטיינרים? איזה אתגרים הם באים לפתור? אחד האתגרים החשובים שהם באים לפתור זה בעצם את האריזה של האפליקציה. איך אני אורז את האפליקציה שלי בצורה כזאת שהדיפלוימנט של האפליקציה יהיה קל ונוח למשתמש, למפעיל.
שנית, הם פותרים את הבעיה של סקלביליטי, איך אפשר בעצם האפליקציה צריכה לגדול אם זה בכוח העיבוד שהיא משתמשת או אם זה בכמות המשאבים כמו זיכרון ודיסק או לחלופין יכול להיות שאני צריך להקים עוד ועוד אינסטנסים של אותה אפליקציה.
כמובן חשוב לי שהאפליקציה שלי תעבוד כמה שיותר מהר ותספק ביצועים כמה שיותר טובים כל זה בעצם מצריך ממני תשתיות מורכבות וכאשר התשתיות נעשות יותר ויותר מורכבות כמו למשל עם מנגנוני הווירטואליזציה שקיימים, אז בעצם נוצר לי overhead, אני צריך הרבה יותר להשקיע משאבים הן של ניהול
והן של מחשוב בתוך התשתית. וגם הנושא של ה-Security נפגע, כי גם יש לי יותר רכיבים במערכת, וגם יש לי יותר מקומות שאותם אני צריך לעדכן ולדאוג לאבטחה שלהם.
כתוצאה מזה האפקטיביות של כל הפתרון שלי יורדת. אז מה זה בעצם הקונטיינרים ואיך הם באים לעזור? קונטיינר זה בעצם אריזה של האפליקציה והליבריס והתשתיות, הדברים המיוחדים שאותה אפליקציה צריכה.
סתם לדוגמה, אם יש לי אפליקציית ווב ובשביל לרוץ למשל היא צריכה קונקטור לדאטאבייס מסוים, אז יש לי את האפליקציה ויש לי את התשתית שלה שזה יכול להיות קונקטור ווב, יש לי אפליקציית PHP אז בתור תשתית היא תצטרך כמובן ליבריס של PHP או אפאצ'י או כל דבר אחר.
את הקונטיינר בעצם מריצה מערכת הפעלה סטנדרטית עם תשתית כמו דוקר שיודעת לעשות אוטומציה להפעלה להורדה של קונטיינרים. היתרון הוא בכך שהאפליקציה שלי היא למעשה תרוץ ישירות על החומרה בלי שהייתי אצטרך לעבור שכבות נוספות בהמשך.
אז בעצם מה זה נותן לי? הקונטיינר שאני מקבל, שזה שילוב של אפליקציה ביחד עם הליבריס שלה, זה מערכת בעצם סגורה שהיא פשוט אני יכול להפעיל אותה ברגע שאני ארצה.
אני יכול לשכפל את הקונטיינרים האלה על ידי כך שבעצם אני עושה להם קופי פייסט בצורה מאוד מהירה מאוד קל לי לגדול בתוך הקונטיינר אם זה בגודל שלו או אם זה פשוט לייצר קונטיינרים חדשים כאלה ואני מקבל ביצועים של בר מטאל כי בעצם האפליקציה שלי היא בפועל רצה על הברזלים עצמם
רצה ממש ישירות על מערכת ההפעלה אז איזה טכנולוגיות בעצם מאפשרות פעם אחת ניהול קונטיינרים כמו דוקר למשל שזמינה ברדט אנטרפרייז לינוקס 7 או בסנטו S7 ומנגנון ה-Control Groups אשר בעצם מפקח על הביצועים, על מה מותר לאותו קונטיינר לעשות, כמה ביצועים מותר לו לצרוך ברמת ה-CPU, ברמת ה-IO ומבחינת שאר
המשאבים במערכת. בעזרת היכולת של הקרנל לעשות איזוליישן ברמת ה-Namespace, כלומר לעשות בידוד לאפליקציה שהאפליקציה לא תראה פרוססים אחרים שרצים במערכת ולא תראה תהליכים או קבצים שהיא לא צריכה לראות בתוך בעצם המערכת הראשית.
וה-SE-Linux אשר בעצם נועד לעטוף את אותו הקונטיינר ולדאוג שגם אם מישהו מנסה לפרוץ מתוך הקונטיינר שהוא לא יגיע למקומות אחרים. אז בואו רגע נסתכל על השוואה של סביבה שמריצה קונטיינרים מול סביבה שמריצה וירטואליזציה.
בואו נתחיל מהסביבה של הווירטואליזציה. יש לנו את החומרה, יש לנו את המערכת ההפעלה או בעצם את מנגנון הניהול של הווירטואליזציה, יש לנו את ה-Hypervisor שזה אותו רכיב שמאפשר לנו להריץ מכונות וירטואליות אם זה המנגנון הפנימי של VMware או אם זה המנגנון הפנימי של KVM או כל רכיב אחר, מעל זה יש לנו מכונות וירטואליות,
שזה בעצם אומר, יש לנו בתוכה מערכת הפעלה, שמכילה בתוכה הרבה מאוד רכיבים כמו דרייברים, כמו סקדג'ולר, כמו מערכת לניהול זיכרון, מערכת לניהול תהליכים, ובנוסף, כמובן היא מכילה את הליבריטס שהאפליקציה צריכה,
למשל את אותו ה-PHP או קונקטור לדאטאבייס כזה ואחר, וכמובן שהיא מכילה את האפליקציה. עכשיו, כל המערכת ההפעלה המסובכת הזאתי, היא בעצם נועדה כדי לאפשר לאותה אפליקציה את תנאי המחיה הנכונים עבורה.
מה שבא הקונטיינר לעשות זה, כמו שאמרתי, לחבר בין האפליקציה לבין התשתיות שלה, אם זה PHP וכדומה. יחד עם זה הם יכולים לרוץ בצורה מבודדת ומאובטחת ישירות על מערכת ההפעלה בלי שהם יוכלו לראות אחד את השני ובלי שאני אצטרך מערכת הפעלה נוספת כדי לבודד את אותה האפליקציה מה שאני
מקבל זה בעצם overhead הרבה יותר קטן בגלל שפה אין לי מערכת הפעלה כפולה אין לי תשתית של היפרווייזר וזה בעצם יאפשר לי תנאי מחייה אופטימליים וביצועים אופטימליים עבור אותה אפליקציה.
מעולה, אז בואו נתחיל לראות איך כל זה מיושם בפועל. מתחברים למכונה שבעצם כבר מותקן עליה דוקר. בסרטון הבא אנחנו נראה איך בדיוק מתקינים סביבה כזאת, אבל פה לצורך ההדגמה דאגתי למכונה שמותקנת מראש.
אני מריץ את הפקודה docker ps -a כדי להראות את כל הקונטיינרים שקיימים במערכת. כרגע קיים לי קונטיינר אחד, הנה קצת הגדלתי את החלון בשביל שאפשר לראות את כל הפרמטרים.
אפשר לראות את ה-ID של המכונה, את ה-image, שתכף נסביר מה זה, שממנו זה מופק, ופרטים כמו מתי פעם אחרונה הפעלנו את המכונה, את השם שלה, קונטיינר ואת הפקודה האחרונה שרצה.
עכשיו אני הולך להפעיל את הקונטיינר הזה, כמו שראיתם, עכשיו הוא במצב של אקזיט, כלומר הוא לא פעיל. אני רושם את השם של הקונטיינר, docker start, ואת השם של הקונטיינר, והפקודה הזאת מפעילה את הקונטיינר.
אני רואה את השם של הקונטיינר אחרי שהרצתי את הפקודה, זה אומר שהפקודה הצליחה. כרגע, אחרי שאני מריץ את הפקודה, אני רואה שהסטטוס של המכונה השתנה והוא up, והוא כבר 9 שניות up.
עכשיו אני הולך לבדוק את הקונטיינר הזה. הקונטיינר הזה בעצם מכיל בתוכו אפליקציית ווב, ואני ניגש ל-local, אני יכול לגשת לשם, אוקיי?
טעות קטנה בפקודה, curl, כן? והנה אני רואה פלט של עמוד ה-web של ה-url הזה, שאומר שה-web page הזה הגיע מתוך הקונטיינר. עכשיו, לצורך הדגמה אני הולך להראות לכם איך עוצרים קונטיינר, עושים את זה בעזרת הפקודה docker stop ואז את השם של הקונטיינר.
ראיתי את השם מופיע שוב לאישור וכמו שאתם רואים אני כבר לא מצליח לגשת לעמוד ה-Web שהיה זמין מקודם.
נעלה את הקונטיינר ורואים שהפעולה מצליחה. בואו נעצור את הקונטיינר ונתקדם הלאה לדבר על האימג'ים. בעצם הקונטיינר עצמו הוא מורכב כמו שאמרתי מהאפליקציה עצמה שבמקרה הזה זה אפאצ'י ואיזושהי סביבה של מערכת הפעלה שמכילה את הליבריז בשביל אותו קונטיינר.
את כל האפליקציה ואת הליבריז שלה אורזים בתוך משהו שנקרא אימג'. אני יכול לראות איזה אימג'ים כרגע מותקנים לי במערכת על ידי הרצאת הפקודה docker image וכאן אני רואה אימג' של ה-Web Container