מה זה docker ולמה זה מגניב לאללה

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

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

באופן הכי פשטני, דוקר היא טכנולוגיה לאריזה של אפליקציות לינוקס. בעבר, כאשר רצינו להפיץ אפליקציה, היינו צריכים לוודא שמערכת ההפעלה תומכת בה, שמותקנים כל התלויות הקשורות לאפליקציה, לבודד אותה מהסביבה תוך כדי דאגה לאבטחה ראויה, להקצאת משאבים נכונה וכו'. דוקר מאפשרת קיצור תהליכים משמעותי כאשר האפלקציה נארזת עם כל התלויות שלה בתוך חבילה אחת, זהו ה- docker image. את הקובץ הזה, אפשר לשמור באופן מרוכז (docker registry) וממנו למשוך אותה אל המערכת המותקנת.

מאחר שמדובר על פורמט סטנדרטי, אין מניעה "להפעיל" את הקובץ הזה במגוון מערכות הפעלה. יחד עם זה, קובץ דוקר שנבנה עבור x86/amd64 לא יכול לעבוד בסביבה של arm.

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

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

גם אם דוקר בעצמו רץ בצורה מאוד יעילה על המכונה המארחת, לגבי התקשורת הסיפור יותר מורכב. מעבדי מחשבים אינם בנויים לבצע הרבה משימות קטנות, ז"א, היכולת שלהם לבצע פעולות תקשורות (הכוללות הרבה חבילות קטנות של נתונים המגיעים באופן מקבילי) הינה פחות טובה. כך שלמרות שביצועי ה- io של והחישוביות של דוקר הינם טובים, התקשורת שלהם עוברת דרך docker proxy שהוא רכיב תוכנה הלוקח יחסית הרבה משאבים ועלול להשפיע לרעה בעיקר על ה- latency, מהירות התגובה. במה שנוגע kubernetes הבעיות אף מורכבות יותר. מאחר שהמערכת כוללת גם הרבה רכיבי נוספים הדורשים גם הם משאבי מיחשוב.

כיום אף אחד לא מעלה דוקר אל מערכות הייצור, אלא פועל באמצעות מערכות מורכבות כגון kubernetes. מה שגורם לאירגונים רבים לפתח בטכנולוגיות של micro servicing. ז"א, במקום שיהיה לנו בינארי אחד גדול (monolith) יש לנו הרבה רכיבים קטנים שכל אחד אמור לבצע משימה אחת מוגדרת היטב ולתקשר עם הרכיבים האחרים באופן סטנדרטי. תאורטית, ניתן לשדרג גירסא של רכיב אחד בתוך המערכת מבלי להשפיע על הביצועים ואפילו ללא downtime. אירגונים רבים קפצו על הרעיון מתוך מחשבה שיוכלו להגיע למחזורי פיתוח קצרים יותר, לפשט את תהליכי הפצת התוכנה ולדאוג ליתירות ועמידות גבוהה יותר של המערכת.

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

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

3 תגובות

  1. פוסט יפה. סיבה נוספת למגניבותו של הDocker היא שניתן להעזר בו כדי להריץ מקומית בקלות אפליקציות (כגון databases ו\או אפליקציות שאתם מפתחים או בודקים), או סביבה נדרשת של מערכת הפעלה, עם ספריות מערכת, עם שפת תכנות ו\או framework בגרסאות ספציפיות. למי שמריץ Ubuntu Linux כמערכת הפעלה ראשית , או על vm מקומי, מומלצת התוכנה Data Pulley (ראו datapulley.com ) ככלי גרפי להורדה וניהול של הcontainers המקומיים.

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

השאירו תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

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