ההיסטוריה המקוצרת של הקונטיינרים מ-Chroot ב-1979
מאת:
רני אסנת, 14.6.17, 08:30
ההיסטוריה של קונטיינרים וירטואליים לפני ש-Docker כבש את הדמיון ופתח דלתות לשימוש נרחב יותר בקונטיינרים. קשה לדמיין חיי devops ללא האקוסיסטם של Docker. בפברואר 2016 השיקה CoreOS את rkt (קיצור של "rocket") מתוך כוונה להפוך לחלופה אמינה ל-Docker.
לפני מספר חודשים חגג
Docker יום הולדת 4 והעלה בי זיכרונות ומחשבות עד כמה מהר הוא צמח לנגד עינינו.
למרות שחגיגות יום ההולדת כבר חלפו, האירוע גרם לי להתחיל מסע אחר בשבילי הזיכרון: ההיסטוריה של קונטיינרים וירטואליים לפני ש-
Docker כבש את הדמיון ופתח דלתות לשימוש נרחב יותר בקונטיינרים. לצורך מסע זה, היכנסו
למכונת הזמן דלוריאן שלי, שמוכרת לכם מסרטי 'בחזרה לעתיד', ובסיוע ויקיפדיה ומקורות אחרים הבה נמריא ל-1979, כאשר הופיעה לראשונה התפיסה של קונטיינרים.
1979: Unix V7
כן, הייתי בן 11 באותו הזמן. במהלך הפיתוח של
Unix V7 ב-1979, הושקה קריאת המערכת
chroot, שהעבירה את ה-
root directory של תהליך וילדיו למיקום חדש במערכת הקבצים.
חידוש זה היה תחילתו של תהליך הבידוד: חציצה של גישה לקבצים עבור כל תהליך.
Chroot נוסף ל-
BSD ב-1982.
2000: FreeBSD Jails
מזנקים כמעט 2 עשורים קדימה לשנת 2000, כאשר ספק קטן של אירוח שיתופי המציא את
FreeBSD jails כדי להשיג הפרדה ברורה בין השירותים שלו לבין אלה של לקוחותיו, לצורך אבטחה וקלות ניהול.
FreeBSD Jails מאפשר לאדמיניסטרטורים לפצל מערכת מחשב
FreeBSD למספר מערכות קטנות ועצמאיות, שנקראות "
Jails", עם היכולת להקצות כתובת
IP לכל מערכת ותצורה.
2001: Linux VServer
כמו
FreeBSD Jails, גם לינוקס
VServer הוא מנגנון כליאה, שיכול לפצל משאבים (מערכות קבצים, כתובות רשת, זיכרון) על גבי מערכת מחשב. וירטואליזצייית מערכת הפעלה זו, שמוטמעת באמצעות עדכון של ליבת הלינוקס, הושקה ב-2011.
עדכונים ניסיוניים עדיין זמינים, אבל העדכון היציב האחרון הושק ב-2006.
2004: קונטיינרים של אורקל סולאריס
אורקל שחררה ב-2004 קונטיינר סולאריס המשלב בקרות משאבי מערכת והפרדת גבולות המסופקת ע"י
zones, שהיו מסוגלים למנף תכונות כגון
Snapshots ושיבוט מ-
ZFS.
2005: Open Z (Open Virtuozzo)
זוהי טכנולוגיית וירטואליזציה ברמת מערכת הפעלה עבור לינוקס, שמשתמשת בליבת לינוקס, שעברה עדכון עבור וירטואליזציה, בידוד, ניהול משאבים ונקודות בקרה. הקוד לא שוחרר כחלק מליבת לינוקס הרשמית.
2006: Process Containers
Process Containers (הושקו ע"י גוגל ב-
2006) תוכננו לצורך הגבלה, בקרה ובידוד שימוש במשאבים (מעבד, זיכרון, קלט/פלט דיסק, קישוריות) של אוסף תהליכים. השם שונה לאחר שנה ל-
Control Groups (cgroups), ובסופו של דבר, הם התמזגו עם
Linux Kernel 2.6.24.
2008:
LXC
LXC (LinuX Containers) הייתה ההטמעה המלאה הראשונה של מנהל קונטיינרים לינוקס.
היא הוטמעה ב-2008 בשימוש ב-
cgroups ו-
Linux namespaces, והיא עובדת על ליבת לינוקס יחידה בלי לדרוש כל עדכונים.
2011:
Warden
CloudFoundry החלה את
Warden ב-2011, בשימוש ב-
LXC בשלביה המוקדמים, ומאוחר יותר החליפה אותה עם הטמעה משלה.
Warden יכולה לבודד סביבות בכל מערכת הפעלה, לרוץ כ-
daemon ולספק
API (ממשק תכנות יישומים) לניהול קונטיינרים. החברה פיתחה מודל שרת-לקוח לניהול אוסף של קונטיינרים ברחבי מארחים
(hosts) מרובים, ו-
Warden כוללת שירות לניהול
cgroups,
namespaces ומחזור חיי
Processes.
2013:
LMCTFY
Let Me Contain That For You (
LMCTFY) יצא לדרך ב-2013 כגרסת קוד פתוח של מערך הקונטיינרים של גוגל, כשהוא מספק קונטיינרים לאפליקציות לינוקס. ניתן להפוך אפליקציות לבעלות לקבל "מודעות לקונטיינר" וליצור ולנהל קונטיינרים משניים שלהן. פריסה פעילה של
LMCTFY נפסקה ב-2015 לאחר שגוגל החלה לתרום תפיסות ליבה של
LMCTFY ל-
libcontainer, שהוא עתה חלק של ה-
Open Container Foundation.
2013:
Docker והעתיד
זה הסיכום שלי לנוף הקונטיינרים בעידן טרום
Docker. לכל הגלגולים האלה היו המאמצים והמעריצים שלהם, אבל כאשר
Docker הופיע ב-2013, פופולאריות הקונטיינרים זינקה. אין זו מקריות, שהגידול של
Docker ושימוש בקונטיינרים הולכים יד ביד.
בדיוק כפי שעשה
Warden, גם
Docker השתמש ב-
LXC בשלביו המוקדמים, ולאחר מכן החליף מנהל קונטיינרים זה עם ספריה משלו,
libcontainer. אבל אין לי ספק, ש-
Docker הפריד עצמו מהחבורה בכך, שהציע אקוסיסטם מלא עבור ניהול קונטיינרים.
עם
Docker,
מפתחים יכולים ליצור ולהריץ במהירות אפליקציות קונטיינרים. ועם השחרור של
Docker Hub, מפתחים יכולים להוריד ולהריץ קונטיינרים של אפליקציות אפילו מהר יותר.
בתוך 4 שנים בלבד, אני, כמו רבים אחרים, מתקשה לדמיין חיי
devops ללא האקוסיסטם של
Docker. אני אוהב להיות חלק ממסע הצמיחה שלו, ומוצא, שפיתוח של מוצר אבטחה אינטגרלי לאקוסיסטם שלו היא חוויה מרחיבת לב ברמות רבות.
כמובן,
Docker אינו לבדו בעתיד זה של הקונטיינרים.
בפברואר 2016 השיקה
CoreOS את
rkt (קיצור של "
rocket") מתוך כוונה להפוך לחלופה אמינה ל-
Docker. כפי שתיארו היטב ב-
InfoWorld :
rkt מתכוון לבצע אותן משימות כמו
Docker, אבל לעשות זאת טוב יותר כשיוכל.
בשנה האחרונה ראינו שינויים רבים, כגון הגדרת
containerd כפורמט הבסיס לקונטיינרים של
Docker (ואשר לצד
rkt, אומץ כסטנדרט ע"י
CNCF, הארגון לטכנולוגיות ענן). במקביל ישנם מאבקים על השליטה בעולם ה-
orchestrators, אותם כלים המנהלים פריסת קונטיינרים.
מאת:
רני אסנת, יוני 2017.
סמנכ"ל השיווק של
אקווה סקיוריטי