שירות DOCKER ו- Container Service

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

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

קצת היסטוריה
בשנת 2008 הוקמה  עיי סולומון היקס חברה בשם DotCloud החברה נתנה שרותי PaaS - Platform as a service למפתחים וחברות שלא רצו להתעסק בתשתיות.  בשנת 2012 החליטה החברה להוציא את אחד מרכיבי התשתית שלה והפכה אותו לפרויקט Open Source וקראה לו Docker. מהר מאוד הפך הפרויקט הצדדי לעסק המרכזי של החברה ולדבר החם הבא שכנראה הולך להפוך את העולם שהכרנו עד היום.
בתוך שלוש שנות חייה גייסה החברה כ 180 מיליון דולר ב 5 סבבי גיוס.

אז מה זה Docker?
Much more than VM on Steroids
Docker היא פלטפורמה שנותנת פתרונות לכל אחד משלבי החיים של תוכנה, פיתוח, בדיקה, פריסה של מערכות ממוחשבות. ניתן להשתמש ב Docker בכל תצורה, החל ממערכות פשוטות מאוד ועד למערכות מורכבות שמכילות ממאות ואלפי רכיבי תוכנה וכל זה נעשה עיי שימוש ב Container (אתם תשמעו את המילה הזאת הרבה).

אז מה זה Container ?
הרבה פעמים נוהגים להשוות Containers ל-VM. יש בניהם דמיון אבל הוא לא גדול. שניהם מספקים תשתית שרת שעליה מריצים מערכת הפעלה אבל בזה פחות או יותר נגמר הקשר שלהם. Container הוא מארז סגור של השרת שבו אתם מריצים את המערכת שלכם. הוא מגיע ארוז כקובץ וכל מה שצריך כדי להריץ את המערכת שלכם הוא פשוט להפעיל את ה Container  בלי צורך להכיר את מה שקורה בפנים.

Containers VS Virtual Machine?
כדי להריץ VM אנחנו מחזיקים שרת פיזי, על גביו מתקינם מערכת הפעלה, מעליה שרת Hypervisor ומעליו בעבור כל VM צריך עוד מערכת הפעלה שצורכת משאבים ושוקלת כמה GB  ורק מעליה את האפליקציה שלכם:  Libs ו-Application ו-DATA.
Docker חוסך לנו את החלק של מערכת הפעלה עבור כל VM ואת תשתית ה Hypervisor מחליף
Docker Engine שמשתף את ה-Kernel של מערכת ההפעלה שעליה הוא רץ עם ה-Containers שרצים מעליו  (Kernel בגדול מספק תקשורת בין מערכת ההפעלה לרכיבי החומרה), ה-Container לא מכיל מערכת הפעלה מלאה, הוא רק מוסיף מעל ה-Kernel את התוספות של מערכת ההפעלה שאותה הוא אורז. התוצאה היא שבפועל יש לנו מערכת הפעלה מלאה החל מגודל של  10mb שעולה במהירות של Milliseconds ומגיעה ארוזה ומוכנה להפעלה ללא צורך בשום קונפיגורציה נוספת.

פתרון לבעיית ה-Shipping
אחד הפתרונות המהפכנים של Docker הוא הפתרון לבעיית ה-Shipping של תוכנה הכוונה להתקנה של המערכת בסביבות שונות בעלות אופי שונה, כמו למשל שרת פיזי, שרת ענן או מכשיר סלולרי וכד'. כל מערכת כמעט מגיעה עם תלויות כאלה ואחרות כמו גרסאות תוכנה או תוכנות צד 3 שהמערכת זקוקה להם כדי לפעול. כל מי שמתקין את המערכת צריך להגדיר במדויק את כל אותם תלויות. עם Docker אין צורך להכיר את כל אותם רכיבים כדי להפעיל את המערכת. כל Container מגיע ארוז עם הסביבה שעליה פותח ואין צורך לדעת איך  להתקין את המערכת שרצה בתוכו ולא איזה גירסת Node ,Java או Python, צריכה לרוץ כדי להפעיל את המערכת, הוא פשוט רץ בדיוק כמו במכונה של המתכנת שפיתח את המוצר. מכירים את המשפט הידוע של המתכנתים כשמשהו לא עובד בשרת  ״אצלי זה עובד״ אז ככה בדיוק זה עובד מהיום, מה שרץ ועובד בסביבת הפיתוח ירוץ ויעבוד בסביבת הפרודקשיין או הבדיקות בלי צורך בהגדרות נוספות.

Sharing - Open Source
כדי לאפשר גמישות מקסימלית, הקליינט של Docker שאיתו אנחנו מתקשרים עם ה-Containers מחובר ישירות ל-Docker Hub (פורטל שיתוף של Containers) -  ויכול להריץ כל Container שתמצאו ב-Hub ותוכלו גם להעלות לשם Containers משלכם. אפשר למצוא ב-Hub גרסאות רשמיות של כל פלטפורמות ה-Open Source וגם Containers של משתמשי Docker אחרים ואפשר ללמוד הרבה על תהליך העבודה עם Containers דרך הפורטל. למשל כדי להתקין שרת Ubuntu כל מה שצריך הוא פשוט להריץ את ה-Container של Ubuntu והמערכת תוריד עבורכם את Container של Ubuntu  ותריץ אותו עבורכם בלי שתצטרכו להתקין אותו בכלל אם הוא לא נמצא מקומית הקליינט ילך ויוריד אותו עבורכם ישירות מה-Docker Hub. בפועל כדי לבנות Container מומלץ לנהל קובץ קונפיגורציה שנקרא Docker FIle, קובץ קצר ולא מסובך שיגדיר בדיוק את כל הרכיבים שמרכיבים את המערכת שלכם. ועל בסיסו יבנה ה-Container שלכם ב-DockerHub מבצע גם בניה אוטומטית של DockerFIles ומאפשר חיבור ל Git. ביחד עם Docker מגיעים עוד כמה כלים:
• Docker Compose שמאפשר לנו להריץ מספר Containersבצורה מסונכרנת ולחבר ביניהם ולתחזק אותם דרך קובץ קונפיגורציה YML
• Docker Swarm מאפשר לנו לתחזק Containers ב Cluster של מחשבים בצורה אך הוא עדיין פרויקט צעיר ולא מכיל יכולות מתקדמות של ניהול מספר רב של Containers

Docker and Windows
אז כולנו כבר יודעים ש-Microsoft אוהבת Linux ושעולמות ה-Open Source כבר לא כל כך זרים ב-Microsoft. בין השאר הוקמה ב-Microsoft חטיבה שלמה שנקראת MS Opentech שכל תפקידה הוא לפתח פתרונות Open Source והם אחראים לפיתוחים רבים ב-Azure.
Microsoft עובדת כבר שנתיים בצמוד עם צוות הפיתוח של Docker ועשתה שינוי יסודי בהתאמת ה-Kernel של Windows Server 2016 כדי שיוכל לתמוך ב Containers. מגרסת ה-CTP 3  ששוחררה לפני חצי שנה בערך, אפשר להריץ  Hyper-V Containers וWindows Containers גם בשרת מקומי וגם ב Azure, מה שאומר שאנחנו יכולים להריץ Container עם סביבת Windows שעליו אנחנו יכולין לארוז אפליקציות .Net שלא רצות על גבי שרתי Linux להשתמש ב IIS ובעצם בכל תשתיות Windows אחרות שאתם מכירים.

עננים  - Docker in the cloud 
כל זאת ועוד לא דיברנו על מה אפשר לעשות עם Docker בענן. כיום רוב פלטפורמות הענן תומכות ב-Docker Containers ומאפשרות להריץ אותם ישירות מהענן. פלטפורמות הענן אמצו מהר מאוד את החבר החדש ואפשרו להריץ Docker Containers על גבי תשתיות הענן שלהם. תוך זמן קצר מאוד כולם החלו לעבוד במרץ על שרות PaaS שיאפשר לנו להריץ קונטיינרים בלי לדאוג לתשתיות השרת ובעצם לפשט את קיום התשתית עבור מי שמריץ מספר רב של Containers על גבי Cluster של מחשבים.
 
Google Cloud Platform
Google השיקה את Container Engine שמאפשר להריץ Containers על גבי הענן של Google  ולנהל את ה-Linux Containers שלכם מרחוק בשימוש ב-Kubernetes שהוא כלי ניהול  ה-Containers של Google שמאפשר לכם לנתר ולעקוב אחרי Containers גם ב-Cluster. בנוסף השיקו ב-Google את  Container Registry  שהוא שרות מקביל ל DockerHub שמאפשר למשתמשים לאחסן  Private Container Registry ובכך בעצם לפתוח Hub פרטי שיהיה זמין מכל מקום בכל זמן.
 
Amazon AWS
באמזון השיקו את שרות Amazon EC2 Container service  שמאפשר לנו ליצור Cluster ולהריץ עליו Linux Containers לנתר אותם, לקבץ אותם בקבוצות לוגיות, ולבצע את כל הפעולות מול ה-Cluster ישירות מה-SDK של  Amazon EC2 Container service.
  
Microsoft Azure
ב-Azure הוציאה גם Microsoft את שרות Azure Container Service שנמצא כרגע ב-Preview.
Azure Container Service מאפשר גם הוא להריץ מספר רב של Containers ללא צורך בניהול התשתיות או מערכות הניהול והניתור. אחד החוזקות של Microsoft הוא שהשרות תומך גם בקונטיינרים של Windows וגם בשל Linux. ה-Azure Container Service מבוסס על טכנולוגיות Open Source ומשתמש ב-Docker, Mesos ו-Swarm כדי לנהל Containers ומאפשר למשתמשים לנהל ולנתר אלפי Containers שרצים במקביל. כל הכלים מגיעים כחלק מהשרות ולא צריך להקים אותם כדי לנהל את הסביבה.

לסיכום
השינוי בפתח ובעתיד הלא כל כך רחוק עבודה עם Containers בכל שלבי הפיתוח של תוכנה יהיה כנראה חלק טבעי ובלתי נפרד מתהליך העבודה , בכל הרמות ממפתחים, בודקים, אנשי תשתיות ו-IT. יש עוד כל כך הרבה מה לומר על הפלטפורמה ולחלום על מה ולאן זה הולך להוביל. מה שבטוח שזה שהרבה יותר יעיל לעבוד עם Containers. כיום כמעט כל החברות הגדולות כבר משתמשות ב-Containers  בסביבות Production וחלקן החלו להשתמש בטכנולוגיה עוד לפני שיצאה גרסה יציבה. אז אם לא ניסיתם עד עכשיו לכו תתנסו מומלץ כי בכל מקרה כנראה שתעשו את זה בשלב הבא אז למה לחכות? , זה ממש פשוט וכיף, ומדהים כמה שזה יעיל.
Containers are the future
לאתר של דוקר  https://www.docker.com
או ישירות לתרגול https://training.docker.com

 

לרשימת כל הידיעות שפורסמו לאחרונה
לסלע שתי זרועות עיקריות: מכללת סלע וסלע – המרכז הטכנולוגי.  מכללת סלע קיימת מזה 25 שנה והיא המכללה הפרטית הותיקה ביותר בשוק הישראלי. מכללת סלע עוסקת בהדרכה להיי-טק ובהסמכת סטודנטים במסגרת ארבעה בתי ספר: מקצועות התוכנה, גרפיקה ומולטימדיה, סיסטם ותקשורת ובית ספר לניהול. המרכז הטכנולוגי מספק פתרונות מיקור חוץ וייעוץ בכיר לטכנולוגיות החדישות ביותר. המרכז עומד בקשר ישיר עם מרכזי הפתוח של מיקרוסופט בעולם ומביא את הטכנולוגיות החדישות ביותר לתוך הפרויקטים בהם הוא עוסק. לסלע חמישה סניפים ברחבי העולם: בהודו, בסינגפור, בקנדה ובארה"ב (וושינגטון די. סי. וסיאטל). לסלע 250 עובדים.

הדפסשלח לחבר
דרונט בניית אתרים