[השמעת מוסיקה] DAVID מלאן: בסדר. תודה רבה לך שבאת. זהו סמינר CS50 על דוקר, טכנולוגיה שאנחנו בעצמנו וCS50 החל להשתמש כבר כמה זמן. אז השם שלי הוא דוד מלאן, אני ללמד מבוא של הרווארד למדעי מחשב. די הרבה שנים, אנחנו כבר לתת לתלמידים בצד הלקוח להורדה מכונות וירטואליות על שהם עושים סטי הבעיות שלהם. שיש לנו עכשיו את המעבר לסביבת ענן שבעצם משתמש בטכנולוגיה זו בשם דוקר, כך שכל CS50 עכשיו יש להם תלמידים מכולות דוקר של שבקרוב תוכל לשמוע את כל העניין. יתר על כן, על השרת של CS50 אשכול צד, במשך שנים רבות אנחנו משתמשים בשרת הענן של אמזון. אנחנו רצים בודדים מכונות וירטואליות. גם זה, אנחנו כבר החלו לעבור ל הדברים האלה נקראים מכולות דוקר כך שכל היישומים שלנו הם עכשיו מבודד לחלוטין זה מזה. אז בשביל זה ועוד, מאפשר לי להציג את החברים שלנו, ניקו ומנה, מדוקר עצמו. ניקולה kabar: תודה, דוד. שלום לכולם. שמי ניקו וזה מנו. אנחנו מדוקרים. אנחנו הולכים לדבר על-- נותן לך חבר 'מבוא לדוקר, ואנו מקווים, לקראת הסוף דיבורים זה אתה יכול להבין כמה אתה יכול להשתמש ברופא ל אוקסלט פיתוח היישומים שלך ופריסה. אז, אנחנו הולכים להתחיל אמיתיים מהיר עם קצת רקע. תאר מה הוא דוקר כל העניין. איך זה עובד? איך זה הארכיטקטורה? אני עושה כמה הדגמות. ומנה הולך להיות מתאר כיצד ניתן להשתמש בדוקר ונותן לך צעדים ספציפיים איך אתה יכול להתחיל. אני אעריך אם אתם יכולים להחזיק לשאלות שלך לקראת הסוף. בדרך זו, יכול להיות שאני פונה אלה שאלות בכל המצגת. אז נשאיר קצת זמן לקראת הסוף לשאלות. אז פשוט אמיתי מהיר, שיש לו למעשה אי פעם עבד על דוקר, כמו שיחק עם זה? מדהים. מגניב. גדול. אז, אני הולך להתחיל עם קצת היסטוריה. אז בחזרה בשנתי ה -90 ו תחילת שנות ה -2000, בעצם כמפתחי אינטרנט, מפתחי אפליקציות, כשהם הלכו לפריסת יישום זה היה קשור ללחשוף מתכת. זה היה שרת אחד. זה היה יישום אחד. באופן מסורתי, דוגמא היה כמו ערימת LAMP להיות, שבו אתה באמת צריך להביא את הבריכה של משאבים. מעבד, זיכרון, דיסק, רשת, התקנה מערכת הפעלה על גבי זה. אם אתה משרת משהו, אם אתה בעצם יש שרת אינטרנט, אתה צריך משהו כמו Apache לשרת אותו. אם בקשתך צריך מסד נתונים, חבטת גב יד, היית להתקין משהו כמו MySQL, וכן הלאה. ואם אתה צריך זמן הריצה, PHPs ועבודת PHP פיתון היו שם. וכך אנחנו בעצם היו ל לקחת אותם הצעדים כדי כדי לקבל היישום והפעלה שלך. אם אתה זקוק לכוח מחשוב יותר, אתה בעצם הייתי צריך להתקשר בחור Ops שלך או הבחורה ללכת ולצבור חדש פיסת החומרה, לחבר אותו, ואתה צריך לחזור על אותם תהליכים שוב ושוב. אז תהליך זה היה יקר יחסית. היה בהחלט איטי מאוד. זה היה לא יעיל. ובמקרים רבים, שלך חומרה שלא מנוצל. אז, בסוף שנתי ה -90 ותחילת שנות ה -2000, וירטואליזציה של חומרה נתקלה. וכמו שאתם יכולים לראות כאן ב תמונה, בעצם מה שהם עשו הוא מופק הבריכה של משאבי חומרה חופשיים ושימש סוג של אלה לשכבות העליונות, במקרה זה, אורחים מערכת הפעלה. וכל הרעיון של מכונות וירטואליות נתקלו ושבאמת עזרו ענן מחשוב כפי שאנו מכירים אותו היום. אז מה זה אומר הוא שאתה יכול לרוץ מכונות וירטואליות מרובות, ש התכוון ערימות מרובות, מרובה יישום על אותו מחשב פיזי. זה בהחלט עזר עם מהירות של פריסת יישומים. בהחלט עם הוצאות. אתה לא צריך ללכת ולבלות אנרגיה, זמן ומשאבים כדי לצבור יותר שרתים כדי להגיע ליותר מחשוב. ואת המהירות של ממש להביא משאבים אלה הוא עד הרבה יותר מהר. גדול. אז פתרנו את הרעב בעולם, נכון? לא לא ממש. אז, וירטואליזציה כמו זה סייע למעשה, לטפל בבעיה, זה בעצם הציג הרבה אתגרים. Hypervisor בהחלט הציג הרבה מורכבות, טיפול בסיסי אלה בריכה של משאבים. זה כבד יותר במובן זה שלפני הייתה לך מערכת הפעלה אחת ש זה כמו שלוש, ארבעה הופעות בדיסק. עכשיו, אם יש לך 10 מכונות על חומרה אחת אתה צריך להכפיל את זה במספר המכונות. זה בהחלט יותר יקר במובן שאתה עדיין צריך לקבל רישוי ל טכנולוגיית וירטואליזציה אם זה לא קוד פתוח. אבל, בואו לא ניקח את כל אשראי ומירטואליזציה. כי מה שקרה הוא שיש הרבה ערימות והרבה תוכנות טכנולוגיות שאפשרו על ידי כמה מהר אתה היה יכול לקבל למשאבים עם בום הענן. אז, היום אפליקציה או שירות יחיד יכול להיות באמצעות כל זמני הריצה הבאות או מסדי נתונים. PHP, Python, MySQL, Redis, מה לא. אז יש הרבה מורכבות בזה מספר הערימות למעשה להביא את שירות יחיד. ויחד עם זה, היה לך הרבה משאבים או תשתיות הבסיסיים סוגים לבחון לפרוס ובעצם לקחת לייצור יישומים אלה שאתה מפתח. במיוחד כמו שיש לך צוותי בוגר שעובד על יישומים אלה, יש הרבה מורכבות ואתגרים שהובאו על מנת להבטיח ש cycle-- בעצם יישום מחזור פיתוח, הוא מוצלח באמת. אז, את העובדה שהיישום שלך הוא עובד באופן מקומי על VM המקומי שלך אינו מתחייב כי הקולגה שלך הולך לצפות את אותן תוצאות. וכאשר צוות התפעול הוא מעורב בלקיחת מה שיש לך ופריסתה בייצור קנה מידה, גם אין שום ערובה שזה באמת הולך לקרות. אז זה משאיר אותנו עם באמת big-- הרבה סימני שאלה, הרבה אתגרים למעשה מתמודד באופן דומה בימים. וזה הזכיר לנו ענף הספנות. אז תעשיית הספנות היה הרבה מוצרים, כפי שניתן לראות בצד שמאל. ועל צד ימין, יש הרבה, בעצם, דרכים לספינה מוצרים אלה. ומה קורה כזוג אנשים הגיעו יחד ואמרו, אנחנו צריכים לתקן כמה אנחנו בעצם ספינת מוצרים אלה. ובום, יש לך את המכולה intermodal. אז הם הסכימו על רוב גדלים נפוצים למכל. כיצד לטפל בהם. מה בדיוק שיטה שאתה צריך כדי לטעון אותם ולפרוק אותם. ולכן, שבאמת עזר ענף הספנות. עכשיו להתמקד יותר מ -90% מועברים בעולם משתמשים במכולות אלה. וזה בהחלט יורד ההוצאות כמו גם הנזקים עקב משלוח. אז אנחנו לוקחים אותו המודל ו להחיל את תוכנת פיתוח שתי אפליקציה ארכיטקטורה, במובן מכלה ש לקח את הווירטואליזציה רמה אחת למעלה. אז במקום לעשות את זה ברמת החומרה, זה הפך יותר של הפעלה וירטואליזציה ברמת המערכת. ואנחנו עושים את זה על ידי מתן כל יישום בעצמו קל, מבודד, להריץ, ו נייד, והכי חשוב, דרך לחבילה למעשה כל מה שהיא צריכה לרוץ. בכל מקום שהוא יכול להפעיל. אז, ללא קשר אם אתה מפעיל אותו על סביבת dev מקומית, הייצור שלך סביבה, הבימוי שלך או בדיקה. לא משנה מה עומד בבסיס תשתית היא שם, הייתה לך אפליקציה עובדת פונקציונלית. אז זה בדיוק מה שבעצם מכולות לעשות לבעיה זו. הם פונים זה על ידי אריזתו באופן כזה שזה יכול להבטיח שזה נפרס בהצלחה, לא משנה היכן הוא חי. אז אם אתה הולך כמו, בוב זה עדיין בסדר. אם אתה מבולבל עם מה שאני אומר, אני הולך להיות לפרט על זה. אז איך עושה את עצמו דוקר תתאים בתמונה הזאת? אז דוקר היא פלטפורמה פתוחה בקלות, מדגישים בקלות, לבנות ספינה, לרוץ, עצמי נייד קל משקל מכולות אפליקציה מספיק מקום. אז אם אתה לוקח משהו מכל זה דיבורים, בבקשה לקחת הבא. אם יש לך ריצת האפליקציה שלך באופן מקומי, ואתה פיתח אותו בשימוש בפלטפורמה דוקר, מצפה זה להתפרס בהצלחה. לא משנה מה הוא תשתית בסיסית. אז אם יש לך דוקר מיכל וזה עובד, אז כל עוד יש דוקר מנוע בהאתרים-- האחר אם תשתית הפעולה שלך הוא משתמש בכל ענן, בין אם זה הוא AWS, או של גוגל, או מיקרוסופט, או כל העננים הציבוריים, או ענן משלך, או ערימה הפתוחה שלך ענן, או בסביבה המקומית שלך. אם יש לך מנוע ריצה, שאמצעי זה הולך להיות בהצלחה לפרוס שם. זה הולך להיות ריצה בדיוק באותה ההתנהגות כפי שאתה הארכיטקטורה שזה יהיה. אז אם אנחנו מסתכלים at-- אני הולך לעבור את מה שבעצם נמצא במרכיבים העיקריים של דוקר. אז המנוע הוא הליבה של דוקר. זה המוח של. זה מנצח בניין, משלוח, ופריסה וניהול המכולות עצמם. אני לחפור לתוך מה עושה מנוע בפרטים נוספים בשני. בעיקרון, כי דוקטור נבנה סביב ארכיטקטורות שרת לקוח, זאת כדי אינטראקציה עם מנוע אתה צריך סוג של לקוח. תמונות התבניות ב שמכל בנוי מ. אז תמונות הן בעצם קבצים רק סטטי. תבניות ומכולות הוא למעשה מה פועל בזמן הריצה ש משרת את הבקשה שלך או עושה משהו עם הנתונים. רישום מופנה כבעיה של איך אתה בעצם להפיץ תמונות. אז אם אתה צריך לשתף את תמונה שעבדת על לקולגה שלך או לצוות אופ, להשתמש בו באמצעות רישום. ניתן להוריד קוד פתוח הגרסה שלו שעבד על דוקר ולפתוח מקורות. או שאתה יכול להשתמש בעזרה דוקר, המהווה את גרסת הענן לדחוף ולמשוך את התמונות שם. זה דבר ענק. כי יש ענק מערכת אקולוגית סביב דוקר וזה באמת ניצול כבדות הרכזת. אז לסיכום כאן, זה איך הלקוח עבודה מינימליסטית דוקר. אתה אינטראקציה עם המארח, ב מקרה זה זה דמונים דוקר. זה אותו דבר כמו מנוע. אתה עושה פקודות כמו דוקר לבנות, למשוך, ריצה. והמנוע עצמו הולך ועושה את הדברים האלה. אז או שהוא מקיים אינטראקציה עם רישום למשוך את התמונות האלה והשכבות של הדימויים. אם אם ברצונך לפרוס, לנהל מכולות, להרוג אותם, לזרוק אותם, מה לא. אז זה מסכם את העבודה של כל הרכיבים הללו. אז אם אתה לוקח כל מרכיב בפני עצמו. אז מנוע, זה רק שד. זה סוג של ישחק אותו לתמוך ב זה על לינוקס כי זה עושה דורש תכונות ליבה מסוימות של לינוקס. אבל Windows פועלת בעושה את אותו הדבר. זה אמור להיות נתמך ב- Windows Server 2016. אז, שוב, את האחריות עם מנוע הוא, או ל, לבנות תמונות. משוך תמונות מהדוקרות רכזת או הרישום שלך. אם תסיים עם התמונות האלה או שאתה יוצר תמונות חדשות, אתה יכול לדחוף אותם בחזרה לרישום לחלקם לקבוצות אחרות. ומנסה להכיל אותו באופן מקומי ולנהל את מחזור החיים של מכולות באופן מקומי. היא בנויה סביב API HTTP REST. אז מבחינה טכנית אתה יכול לכתוב הלקוח שלך כל עוד הוא משתמש בHTTP, שהוא מאוד מנגנון סטנדרטי לדבר מנוע והרבה שירותים אחרים. ואתה יכול לראות מ כאן שללא קשר ממה שהתשתית הוא, כל עוד אתה can-- כל אתה צריך היא הפעלה מערכת, במיוחד לינוקס. ואתה יכול להתקין מנוע דוקר על גבי זה ויש לי אותו פועל וזה מנצח, בעצם, כל אלה אפליקציה אחת, שתיים, ושלוש הם מכולות בפועל. אז זה מנוע. כפי שציינתי קודם לכן, כי אתה צריך אינטראקציה עם מנוע, יש לקוח. אבל למעשה בעת ההתקנה דוקר, זה ספינות עם זה. אז זה מקבל מותקן, אז זה בינארי יחיד. ואתה יכול לעשות שיחות מקומיות למנוע דוקר שלך. או שיחות מרחוק למנועים מרחוק. זה להשתמש HTTP, כ שציינתי קודם לכן. יש לקוח GUI נקרא Kitematic מדוקר. ויש בהחלט הרבה אנשים אחרים שבונים הרבה GUIs שבעצם ליישם כמה HTTP קורא לדבר מנוע. רק חלק פקודות מדגם. אם אתה עושה את הגרסה דוקר, זה היה להראות לך את גרסת הלקוח, כמו גם גרסת השרת. אם אתה עושה את המידע דוקר זה יהיה להגיד לך את כל המידע על כמה מכולות פועלים או שנוצר, כמה תמונות יש לך, וכן הלאה וכן הלאה. כאן יש לי, בסמוך ל התיבה האחרונה, יש לי לרוץ דוקטור. אז ככה אני בעצם יצירת מיכל. ואני נותן אותו להד שלום העולם ולישון לרגע ומה לא. ואתה יכול לראות את תוֹצָאָה. אז זה מתמשך. ודומה לPS לינוקס, אתה יכול לראות כל התהליכים ו, ​​במקרה זה, כל מכולות הריצה. בחזרה מתייחס זה אחד ל מכלי זה עתה יצר. אז, זה באמת חשוב, כי, כמו, זה יכול להיות קצת מבלבל. אז תמונות הן לקריאה בלבד אוסף של קבצים, נכון? הם מה שהמכל שלנו מבוסס על. אבל הם לקריאה בלבד בלבד. אז שתתחיל עם תמונת בסיס. הוא נוטה לחקות כמו OS-, כך אובונטו, CentOS, תמונת בסיס מה לא. ואז אתה מתחיל לבנות על גבי ש, שכבות מסוימות, שיהפכו את תמונת הסוף שלך, התוצאה הסופית כאן. וכל אחד משכבות אלה צריך תמונת הורה שאליו הוא מפנה כאשר היא באמת רוצה ליצור. הם בלתי ניתנים לשינוי, במובן שבגלל שהם לקריאה בלבד, אתה לא יכול למעשה לבצע שינוייהם. אתה יכול להשתמש בם כדי ליצור מיכל מתמונה, ש יקרא את כל הבא תמונות הנדרשות מתחתיו. אתה יכול לבצע שינויים לשכבה שונה, זה שכבה לשכתב אני יהיה לדבר על בשני. אבל כל אחד משכבות אלה אף פעם לא משתנים. בעיקרון תמונות להשתמש במשהו בשם האיחוד File System, UFS. ויש אחסון שונה מסדים לנצל טכנולוגיה זו. ומה זה אומר הוא שזה מפגיש מערכות קבצים שונות לגרום להם להיראות כמו אחד. אז אתה בעצם יכול, מ פרספקטיבת יישום, יש לך ראש של תצוגה המציגה כל מערכת הקבצים השונות נחוצה ליישום שכדי להפעיל. אבל הם בעצם, על זה, הם למעשה במקומות נפרדים ומנוצל על ידי מכולות אחרות גם כן. אז כפי שאתם יכולים לראות כאן ש אם נתחיל עם תמונת דמון כתמונת בסיס, ולאחר מכן אנחנו הולכים ובלהוסיף [? Emacs?] ואז זה עוד שכבה. ולאחר מכן להוסיף אפאצ'י. זה שכבה נוספת. ואז אנחנו מבלים מיכל מזה. כל אחד מהתמונות האלה, כל אחד משכבות אלה, הוא ברור ויכול להיות שימוש חוזר במכל אחר. אם אתה מסתכל על מיכלי עצמם, הם איכשהו כמו כמו-VM, אבל לא התייחס אליו בזמן. אז, אין להם, מבחינה טכנית, מערכת הפעלה מלאה מתחתיהם. הם משתמשים בליבה אחת של מערכת ההפעלה המארחת. והם בונים על גבי זה. הם מחקים באיך הם נראים. הם מחקים קובץ שורשם מערכת של מערכת ההפעלה. אבל הם בעצם לא משכפלים. לכן, במקום שיש שכבות בלתי ניתנות לשינוי, השכבה האחרונה, המהווה את המכל עצמו, זה שכבת קריאה-כתיבה. שגם מנהל את התהליכים הבקשה שלך. וזה תלוי בשכבות הבסיס. כל מיכל הוא נוצר מתמונה. ותמונה שיכולה להיות אחת שכבה או תמונה רבה-שכבתית. ואני רוצה לציין כאן שדוקר משתמש בכבדות, או מבוסס על מנגנון ההעתקה-און-כתיבה. כך שלמעשה, אם אתה לא מה שהופך למכל שינויים, זה לא הולך לקחת שטח נוסף. אז זה בעצם איך אתה לסכם העתק-און-כתיבה. זה הולך בהחלט לזרז זמן האתחול למכל. כי אם אתה לא עושה שינויים במכל, זה ניצול מה שכבר יש. אז, איך זה עובד בפועל. חלק ממנה כמו, עכשיו, זה מנצל לפחות שתי ליבה מרכזית מאפיינים. וזה בעצם מה ש נוצר רמה של בידוד למכלי עצמם. תכונות אלה מרחבי וcgroups. אז מרחבי הם דרך ל ליצור משאבים מבודדים, כך שבתוך המכל עצמו, רק אתה יכול לראות משאבים מסוימים. כגון ממשק הרשת או משתמשים מסוימים או מה לא. ואלה הם רק גלויים ורק נגיש בתוך המכל. Cgroup בצד מגבלות האחרות איך אתה משתמש במשאבים אלה. מעבד, זיכרון, ודיסק. כאשר אתה יכול ללכת ב, אני מתכוון לאלה הם למעשה תכונות שפותחו by-- הם חלק מליבת לינוקס. אז הם לא המציאו מחדש על ידי או על ידי מחדש דוקר. דוקר משתמש בהם. מה שרופא של ממש עשה כאן הוא למעשה אותו יצירת מתוזמר מרחבי עבור כל מכולה ויצירת cgroups כך שזה קל עד כדי גיחוך ליצור מכולות שימוש בתכונות אלה. כמובן, כפי שתארתי קודם לכן, איחוד מערכות קבצים והעתקה-און-כתוב באמת לעזור את המהירות ואת הדיסק סילוק מכולות. וברגע שאתה מקבל ידיים סביב דוקר, אתה הולך לראות כמה מהר זה ל למעשה ספין את מכולות ודמעה אותם. לכן, אם אתה יכול לשאול, איך יכול אתה בעצם לבנות תמונות? אנחנו בונים תמונות על ידי תהליך של יצירת מכולות וביצוע שינויים, שינוי שלהם, וביצועם להפיכת תמונה. אז זה עוף ו התייחסות ביצה כאן, כי כל מיכלי לבוא מתמונות ותמונות לבוא ממכולות מחויבות, על פי רוב. קיימות שלוש אפשרויות כדי ליצור תמונות. אני הולך לתאר הראשון ואחרון. אתה יכול גם באופן ידני ללכת ולהפעיל את המכל ולבצע שינויים אלה, כמו שהיית עושה בכל VM או כל מערכת הפעלה, כגון כמו התקנת קבצים בינאריים חדשים, הוספת מערכות קבצים, ומה לא. ואז אתה יוצא, כ אתה יכול לראות שם למעלה. אני יוצא מיכל שלי. ואז אני עושה דוקר להתחייב. ואני מבצע את זה. ניתן לראות כי המספר כאן רק UUID, או 12 הראשונים פיסות UUID. או בתים של UUID. ואז אני קורא לזה התמונה שלי. אז עכשיו דוקר דואג הקלטה כל מה שעשיתי זה ויצירה החדשה תמונה על בסיס זה. אני לא הולך לדבר על tarball, אבל יש דרך שאתה יכול להשיג אחד, ליצור אחד, או לעשות אחת תמונת שכבה באמצעות ארכיבים. מה שאני הולך לדבר על זה ומה בעיקר משמש היום, הוא Dockerfile. אשר הוא מבחינה טכנית הראשון צעד אוטומטי על ידי דוקר עצמו. אז Dockerfiles דברים שאתה הולך לראות בהרבה Repos GitHub היום. זה בעצם רק קובץ טקסט המתאר בדיוק איך לבנות תמונה. ועבור כל שורה, זה בעצם יוצר מיכל, מבצע שורה ש, מבצע מיכל שלתוך תמונה חדשה, ואתה, בעצם, להשתמש בו לכל פעולות שלאחר מכן עד שתגיעו לתמונה האחרונה. שהוא בעצם בסופו של המטרה כאן, הסוף. ואחרי שאתה exec-- לאחר ש לכתוב Dockerfile, ש הוא אך ורק בטקסט, אתה עושה דוקר לבנות ושם התמונה. ואתה מצביע שבהוא שם Dockerfile הוא ב. ואתה יכול לצפות לראות תמונה שלי כתמונה שיש לך באופן מקומי. אז זה רק חזותי דוגמא למה שקורה. אתה מתחיל עם תמונת בסיס. אתה מפעיל את זה לתוך מיכל ש אינו משנה את תמונת הבסיס עצמו. אבל במקום יוצר לשכתב שכבה על גבי זה שבו אתה לבצע את השינויים, שבו אתה מתחייב ואתה חוזר על התהליך עד ש אתה מקבל התמונה הסופית שלך. ועל ידי כך, כל מבנה אחר תהליך יכול להשתמש באותו שכבות ובעצם same-- דוקר מטמוני שכבות אלה. כך שאם אני עושה את אותו הדבר תהליך, אבל במקום להתקין PHP, אני מתקין פייתון. זה הולך להשתמש אפאצ'י ואובונטו. אז ככה אתה ניצול הדיסק שלך. זה ניצול המטמון ותמונות זמינות שם. החלק האחרון הוא רישום, ש איך אתה להפיץ את התמונות שלך. וכפי שציינתי קודם לכן, יש גרסת ענן שלה, שהוא דוקר Hub. אתה יכול ללכת ולחקור הרבה, בעצם זה מוצר SAS ציבורי ש עדיין אתה יכול לקבל תמונות פרטיות, אבל יש הרבה תמונות ציבוריות. זה למעשה בלתי-מוגבל, אתה יכול לדחוף תמונות ציבוריות ללא הגבלה יש. וזה איך אתה יכול לשתף פעולה עם צוות שלך. אתה יכול רק להצביעם בך ריפית והם יכולים להוריד אותו או את התמונה שלך והם יכולים להוריד אותו. אז מספיק עם הדיבורים. מי שרוצה לראות כמה הדגמות אמיתיות מהיר? בסדר. אז הנה יש לי. Ca אתם רואים את המסך שלי? בסדר. אז יש לי דוקר פועלים כאן, ולכן אני יכול לבדוק הוא-- זוהי הגרסה של דוקר שרץ. יכול לעשות מידע דוקר. סמן את כל המידע על כמה תמונות שיש להם, וכן הלאה וכן הלאה. דוקר PS, יש ריצה שום דבר. בשרשור אלה. אז הדבר הראשון שאני רוצה לעשות הוא להראות לך איך אתה יכול בקלות להפעיל את מיכל. אז היופי על ריצת דוקטור, אם זה באמת אינו מוצא תמונה באופן מקומי, כברירת מחדל הוא מדבר לרכזת דוקטור ומנסה למצוא אותו שם והורדות את זה בשבילך. אז זה כולל דוקר למשוך הפקודה, באופן טבעי. אז אם אני עושה ריצה דוקר, שלום-עולם. אז, ראשון זה הולך כדי לנסות לאתר אותו. אחרת, כפי שאתם יכולים לראות כאן, זה לא הצליח למצוא אותו באופן מקומי. עכשיו זה פשוט משך את שתי שכבות שעשה תמונה ושאני רצתי אותו. שלום-העולם הוא רק בעצם פלטים, מה יש לך לעשות. אז זה הכי קל, אחד דוגמאות הכי קלות. אז בעצם אני פשוט רצתי ו הופסק המכל ממש מהר. אם אני רוצה run-- ודרך אגב, אם אני רוצה שפעם, רק שתדע, זה כמה זמן לוקח ל למעשה ספין ולהכיל אותו. אנחנו מודדים את זה באלפיות שני. אז אתה יכול לראות כמה זה יכול למעשה לעזור לך לא רק בבדיקה, אבל גם אף פריסה. אז זה הערה מהירה על זה. הדבר הבא שאני הולך לעשות הוא למעשה לרוץ תמונה כבר מוכנה. אז דוקר ריצה. -d הוא רק דגל לספר זה לרוץ ברקע. ו-p מקצה יציאות מסוימות. כי כברירת מחדל, מכולות הן מבודדות, ולכן אתה צריך לציין בדיוק איך זה יכול לגשת אליהם. ובמקרה הזה, אני אומר לי דוקר למפות נמל אקראי במחשב המארח ליציאה שצוינה ב המכל עצמו. וזה בעצם שם image-- אני מקווה שזה נכון. אז היא עושה הורדות מקבילות כל של שכבות אלה כפי שאתה יכול לראות כאן. אלה הם של השכבות עושים תמונת הסוף שבניתי. זה הולך לקחת שני. וזהו. אז עכשיו אם אני עושה ps דוקר, אני צריך לראות משהו שבו פועל. אני צריך לראות את תעודת הזהות, התמונה כי זה היה מבוסס על הנחה, ואת הפקודה שהוצא להורג. ואיך לגשת אליו היא בעצם אתה הולך לנמל ש. אז אני הולך צריכה-- זה הוא אני מפעיל אותו על AWS. אני מתכוון ללכת ל32,769. אופס. וכאן אנחנו הולכים. אז זה בעצם רק שירות אינטרנט המציג שמכל זה להיות מוגש מ. אז אתה יכול לראות שזה הוא מa9f המכל. וכאן זה שמו של המכל. אז אתם יכולים לראות כמה מהר זה היה למעשה למשוך לא רק, אלא גם לפרוס מיכל זה. עכשיו השלב הבא הוא להסתכל לתוך Dockerfiles ואיך בעצם אנחנו יכולים לבנות תמונות חדשות. אני רק הולך לקבל שיבוט, מדגם מבוסס על Dockerfile קודם לכן תרשים, אחד לאפצ'י ו- PHP. אני מקווה שאני זוכר ריפו שלי. אז יש לי המאגר שלי עכשיו. ואתה הולך לראות זה הרבה בעצם. אני לא להתקין עץ. אז בעצם אתה הולך לראות איך תיעוד קוד המקור שלך סביב זה, ולאחר מכן על Dockerfile איך בעצם לארוז אותו. אז זה רק מדגם PHP שמהדהד CS50 שלום. אז אם אני רוצה להפעיל אותו, אני אעשה לבנות דוקר. אני צריך לבנות אותו לראשונה. אני הולך לשם זה demo_cs50. ואתה צריך תג לזה יותר מדי. אז בואו נקראים לזה V1 נקודה. אז כפי שתארתי קודם לכן, מה שאני עושה היום הוא אני אומר לי דוקר ללכת שימוש לראות-- למעשה, מצטער, רע. אנחנו לא נסתכל בDockerfile עצמו. אז רק הדברים כאן הם index.php כמו גם את קובץ readme וDockerfile. אז אם אתה תסתכל Dockerfile, אז זה מאוד דומה למה ש שתארתי קודם. זה פשוט חבורה של צעדים שדוקרים מבצע על ידי יצירת ולהרוס את המכולות ו[? סופר?] אותם לתמונה. ובעצם אתה יכול see-- [לא ברור] זה כאן-- אבל זה מריפה המקומי. זה הולך וindex.php לתפוס. אז זה קוד המקור היחיד ש הם למעשה חלק מהיישום שלך. כל זה הוא בעצם צנרת מערכת הפעלה, מקבל את החבילות הנכונות ו אפאצ'י, ו- PHP, ומה לא. אבל זה בעצם לוקח index.php וביצועו למכל, לתמונה. אז אם אתה הולך קדימה ולהפעיל את הפקודה ידי ביצוע הפעולות הבאים, זה going-- למעשה, זה עלול לקחת קצת. אני מקווה שזה לא ייקח יותר מדי זמן. אז אתה יכול לראות את הצעדים. ואני ממליץ לך ללכת חזרה הביתה היום ולנסות את זה. ומנה תתאר איך בדיוק אתה עושה את זה. אבל זה ממש נהדר לראות בדיוק מה שקורה מאחורי הקלעים. אבל זה קל עד כדי גיחוך לבנות תמונות ולפרוס אותם באמצעות דוקר. זה לוקח קצת יותר ממה שציפיתי. בואו לראות מה קורה כאשר אתם-- להתקרר. אז כפי שאתם יכולים לראות, כל אחד מהשלבים האלה מייצג קווים בDockerfile. וזה מראה כאן ש בנה בהצלחה את התמונה. אז אם אני עושה את התמונות דוקר, אני הולך תראה את כל התמונות שיש לי באופן מקומי. ואחד מהם נקרא שם משתמש, ואת השם של התמונה, וrepresenting-- התג בעיקר זה תג גרסה. אז עכשיו אם אני רוצה לרוץ זה, אני עושה ריצה דוקר. ואני רק רוצה לעשות -P -d. האם v1. אז אני יכול לראות עכשיו שיש לי שני מכולות פועלות, אחד שאני פשוט יצר ושלום דוקר אחד שיש לי שעבר. ואתם יכולים לראות כאן ש שהוקצה לו יציאה אחרת. אז אם אני הולך לאותו IP אבל להקצות אותו port-- שונה אני מקווה שלא. אז עכשיו זה יישום כי אני פשוט לפרוס. אם אני רוצה לעשות שינויים, אני ניתן לערוך את קוד המקור במהירות ולבצע את הפעולות הבאות. בואו נעשה שלום הרווארד. אז עכשיו מה קורה לקרות הוא שאני הולך לתייג אותו עם שונה version-- הו, לא זו guy-- לתייג אותו עם גרסה שונה. ואתה הולך see-- לעשות אתם מצפים זה לקחת את אותה כמות של זמן לבנות אותו בפעם שנייה או לא? בסדר, ומישהו יודע למה? דבר. קהל: [לא ברור] ניקולה kabar: זה בעצם אנחנו רק לשנות את אחד הצעדים מאוחר יותר. ולכן זה הולך להשתמש ב מטמון ולהשתמש בכל שכבות אלה. וזה באמת חלק מ תכונות רוצח של דוקר איך זה בעצם מנצל ועושה שימוש חוזר משתלט הדיסק שלך לאותו חתיכות מדויקות של מידע. אז אם אנחנו עושים את אותו הדבר, זה לקח רק כמה שניות. אם אנחנו רוצים redeploy-- אז עכשיו אני צריך שלוש מכולות. אבל זה אחד הוא להיות מוגש על שבע כל-- אחד. אז עכשיו זה המכל השלישי. כולם מבינים מה שעשיתי כאן? אז עכשיו אם אתה רוצה לחלוק את זה מיכל אמיתי מהיר עם החברים שלך, אתה פשוט יכול לעשות דוקר לדחוף שמו של המכל, אני מקווה. אז עכשיו זה הולך לדחוף אותו צריכה-- אני לא חתמתי בכאן. מצטער על זה. אבל אני לא הולך לפתור את זה עכשיו. אבל בעצם שפקודה אחת הוא רק הולך עד לדחוף אותו. ואתה הולך להיות מסוגל רואה את זה, אם אתה הולך לדוקר Hub ואתה מתחבר, אתה הולך להיות מסוגל לראות את זה. ואז אתה פשוט יכול להצביע מי שהולך להשתמש בתמונה שללכת ולמשוך אותו. והם יכולים להשתמש בו. עם זה, בתקווה אני סוג של הפגין כמה קל לעבוד עם דוקר. ואני רק הולך ל להחזיר להמן זה. והוא הולך לקחת את זה מכאן. מנו סימנים: בסדר תודה, תודה ניקו. אז מה? אז אחד הדברים ש רציתי לעשות הוא להרכיב מדוע זה important-- מדוע ולמה דוקר מכולות הן כאלה פיתוח חדש וחשוב, דרך חדשה של תוכנה בעצם עושה. ולפני שאני עושה, אני הולך רק להציג כמה נתונים סטטיסטיים. אני לא הולך לקרוא את כל אלה. אבל זה מראה לך הרבה על איך פופולרי זה בקהילה. הטכנולוגיות דוקר הליבה הם קוד פתוח. אז זה דוקר מנוע, להלחין, נחיל, חבורה של דברים אחרים כל הקוד הפתוח. ויש לנו, מה עשה לי אומר, 1,300 תורמים. אתה רואה עכשיו, אם אתה מסתכל על מספר המשרות הפנויות, בפעם האחרונה אנחנו נראים, זה היה על 43,000 עבודה פתחים להזכיר במיוחד היכרות עם דוקר. מאות מיליון של תמונות יש לי כבר הורד מהדוקר Hub. וכן, גם הנתונים הסטטיסטיים הרבה יותר גדולים. למי הם סקרנים, זה נכתב במקור בפייתון ונכתב מחדש לאחר מכן לגו. וזה היה רק לפתוח source-- זה רק שוחרר לכ -2 ו1/2 שנים, מה שאומר שב 2 ו1/2 שנים, ראינו כמות עצומה של צמיחה וחשיבות זה בקהילה. וכך אני רוצה לדבר קצת על למה. אז רק כדי לחזור ולהדגיש חלק מ נקודות המפתח של ניקו, דוקר היא מהירות. הוא נייד. זה לשחזור. וזה מגדיר את סביבה סטנדרטית. וwhat-- זה מחורבן פסלים למגר את slide-- מה זה עוזר לאנשים לעשות, ש הרבה של תעשיית התוכנה התחיל לעשות ב תחילת שנות ה -2000, נעה ממונוליטי אלה יישומים בודדים שבו כל תלות הייתה צריך להיות נבדק לפני שהייתה לי כל האפליקציה להתפרס, ש יכול להיות אתר אינטרנט רק יש לפרוס פעם כל שלושה חודשים, או יותר, לשירות הרבה יותר ארכיטקטורת מוכוונת או סוג אחר componentized של ארכיטקטורת יישום. וכך מאפשר אלה סוג של ארכיטקטורות המנצלים דוקר לרוץ בשלושה אלה אזורים עיקריים של פיתוח, ש הוא פיתוח כתיבת הקוד שלך בפועל, בדיקת הקוד שלך, ופריסתו. אז למה זה חשוב? אם אתה זה-- תן לי לתת דוגמא. אם אתה אתר מפתחי מכשיר, אתה פיתוח אתר אינטרנט המבוסס על מסד הנתונים שהדוד מיוצר כאן. מצטער דוד, אני קורא לך. אם אתה רוצה לפרוס כל הדבר, שהיית צריך לחכות תחת מסורתי פיתוח תוכנה מונוליטית סביבה, שהיית צריכה לחכות עד שהוא נעשה בבסיס הנתונים לפני שאתה באמת יכול לעשות כל שינוי באתר האינטרנט שלך. היית צריך לפרוס מחדש יישום כולו כדי לעשות זאת. ומה דוקר עוזר לך לעשות הוא כל עבודת אדם על מרכיבים שונים ולעדכן אותם כמו שהם הולכים, רק עושה בטוח שהממשקים להישאר אותו הדבר. אז מה שעשה הוא זה עבר אנשים מלעשות מונוליטי המסיבי אלה תוכנת הארכיטקטורה ש לפרוס בכל חודש לרציף אינטגרציה ופיתוח מתמשך סְבִיבָה. עכשיו זה לא ייחודי לדוקר, אבל דוקר עושה את זה כל כך הרבה יותר קל, מה שאומר שאתה בעצם כל הזמן פריסה. אנחנו מדברים עם חברות ש פריסת יישומי ציפוי ציבוריים אלפי פעמים ביום כי הם רואים את הערך בפשוט עושה שינויים קטנים, ועוד כפי שהוא פועל באמצעות הבדיקות, לתת לה לצאת לייצור. ניקו תמיד היה אומר לי מוקדם יותר באותו בסביבות רבות, מחזור החיים הסטנדרטי של מיכל נמדד בשניות, בעוד מכונה וירטואלית יכול להיות שנמדד בחודשים. אני רוצה לקחת קל להפוך לכאן כי אני במוסד חינוכי. רציתי לתת דוגמא לאופן ש זה עובד במחקר חינוכי מַצָב. אז יש ארגון bioboxes נקרא. Bioboxes עושה DNA ניתוח לחוקרים. עכשיו מה שהם מצאו היה שכאשר researcher-- וזה לא אשמתו של כל פרט אבל כאשר researcher-- חוקר לפרוס אלגוריתם לנתח, בדרך מסוימת, דגימת DNA, הם יכתבו את התוכנה, לפרסם את זה, אולי ל GitHub או במקום אחר, ואז הם עשו. ובכן הבעיה הייתה שזה לא היה בהכרח לשחזור. כי כדי להבין את התוכנה, הם יהיו להגדיר ל סביבת פיתוח מדויקת שהחוקר שהשתמש, בדרך כלל המחשב הנייד שלהם, או שרת, או נתונים מרכז שהם משתמשים. וכתוצאה מכך, זה היה קשה מאוד כדי לשחזר את תוצאות מחקר כאשר ניתוח דגימות DNA להסתכל בדברים כמו incidence-- להשוות שכיחות של התקפי לב המבוסס על גנים מסוימים להיות נוכח, למשל, או את סיכון לסרטן, או כל אחד מהסוגים האחרים של דברים. אז מה שהם עשו היה במקום הם החלו ליצור מכולות. ואתה יכול ללכת לbioboxes.org, זה ארגון גדול. ומה שהם עושים הוא שהם מייצרים מכולות המבוססות על מחקר. ואז בכל פעם שמישהו שולח במדגם שלהם, הם יכולים להפעיל אותו. ויש לו את כל הסביבה צריך להפעיל אלגוריתם ש ולייצר תוצאות. והם מגלים שהם הרבה יותר סביר והרבה יותר מהר תוכל להחזיר תוצאות לאנשים. ולמעשה, מה שאנשים עושים מפעילים ניתוח שלהם על ה- DNA, שליחה שלbioboxes, ו אז biobox פשוט לוקח את הנתונים, מפעיל אותו נגד המגוון מיכלים שונים של כדי לראות תוצאות שונות בהתבסס על מחקר שונה. אז זה מאוד חזק אופן שבו חוקרים יכול לעשות מופע יחיד המאפשר אנשים אחרים כדי לנסות ולשחזר התוצאות. אז איך לך להתחיל? אנחנו נתמכים גם על לינוקס. אז אם אתה רוצה להתקין שום דבר על לינוקס, אתה משתמש רגיל שלך מנהל חבילות להתקנה. אם אתה משתמש בדביאן, זה הגט מתאים. CentOS הוא יאם. פדורה רד האט הוא rpm-- אני לא זוכר. בכל מקרה, זה כל מה שיש. אנו תומכים במגוון רחב של הפצת לינוקס. אתה יכול לבדוק אותם החוצה. יש לנו גם אפשרויות, כך ש יכול לרוץ על Mac או Windows. עכשיו ניקו ציינו שקודם לכן זה נתמכה רק על לינוקס. זה נכון, כי זה צריך הקרנל של לינוקס. אבל, אתה יכול לרוץ במכונה וירטואלית. ומה את ארגז הכלים דוקר עושה, שבו אתה יכול להוריד, זה נותן לך שהמכונה וירטואלית. 48 אז פשוט מהיר שני, אני חושב, להוריד. אתה פשוט לחפש בדוקר ארגז כלים, להוריד אותו ל- Mac, וחלק זה הוא של כמובן האיץ כי מי רוצה לראות אות להורדה? התקנה סטנדרטית מק, ואז אתה הולך לראות ג'רום לשים בסיסמא שלו. זה מאוד מרגש. ואז זה מתקין כל חבורה של כלים. ובמיוחד שזה יהיה התקנה של שורת הפקודה. ואז אתה יכול לראות ג'רום בדיקת התמונות שלו. ולאחר מכן על בסיס זה, אתה יכול לראות שYouTube חושב שניקו מעוניין ב מלחמת כוכבים, מופע ג'ימי קימל, ואני חושב שאלן. אני חושב שאחרון הוא קליפ ממופע אלן. אז דוקר ארגז כלים מגיעים אף עם יותר מסתם מכונת דוקר. אז דוקר מכונת היא הדבר שעוזר אתה מגדיר את וירטואלי מכונה על Windows שלך או Mac-- התיבה של Windows או Mac שלך box-- ועוזר לך לעשות את ההקצאה, אבל זה מגיע גם עם נחיל ולהלחין, אשר נועדו לעזור לך לעשות גדול פריסות בקנה מידה של היישום שלך. אז אם אתה רוצה לנהל אשכולות של בלוטות, אשכולות של מכולות, להלחין ו נחיל הוא הדרך ללכת על זה. וכמובן שהוא מגיע עם מנוע דוקר וKitematic, אשר הוא GUI שולחן עבודה זו. אני צריך גם להזכיר דוקר רישום, שאינו כלול בארגז כלים, אבל את זה הוא דרך בשבילך לרוץ משלך רישומים של תמונות דוקר כמו דוקר רכזת, אבל אתה יכול גם פשוט להשתמש דוקר Hub כדרך לעשות את זה. ו, טוויסט עלילה, אתה רואה זה פועל במכל. וככה אנחנו הפצת השקופיות שלנו. כל מצגת זו למעשה סיפון שקופיות HTML. והוא פועל ב מיכל, שבו אתה יכול לקבל by-- ניקולה kabar: כן, אז זה פועל במשרה מלאה במקס שלי. ואני מציג מזה. ואתה פשוט לעשות דוקר לאחר התקנת ארגז הכלים שלך. אתה פשוט יכול לעשות ריצה דוקר ולקבל את זה, ולהשתמש בשקופיות. מנו סימנים: וזהו זה. אז אנחנו מודים לכולכם שבאתם. ואנחנו שמחים לענות על שאלות. אני צריך להזכיר לפני שמישהו משאיר יש חולצות שם. מצטער כל מי שצופה בי זה על Livestream או וידאו, אבל יש לנו דוקר חולצות שם. ואנחנו יודעים תלמידים דוקר, ובניסיון שלי, פרופסורים מדי, כמו בגדים בחינם. אז תודה לכולכם על שיצא. ולעקוב אחרינו בטוויטר אם אתה רוצה, או לא. לא אכפת לי. גם אחרי דוקר בטוויטר. זה גם מעניין. ואז זהו זה. Docker.com. תודה. [תְשׁוּאוֹת]