מה זה Docker?

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

Containers as a Service (CaaS) או Container Services הם שירותי ענן מנוהלים המנהלים את מחזור החיים של קונטיינרים. שירותי קונטיינר עוזרים לתזמר (להתחיל, לעצור, להתאים) את זמן הריצה של קונטיינרים. באמצעות שירותי קונטיינר, אתה יכול לפשט, לבצע אוטומציה ולהאיץ את מחזור חיי הפיתוח והפריסה של האפליקציות שלך.

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

הגדר את הטרמינולוגיה של Docker

Docker:

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

מְכוֹלָה:

שלא כמו VM המספק וירטואליזציה של חומרה, מיכל מספק וירטואליזציה קלת משקל ברמת מערכת ההפעלה על ידי הפשטת "מרחב המשתמש". מיכלים שתף את הליבה של המערכת המארחת עם קונטיינרים אחרים. קונטיינר, הפועל על מערכת ההפעלה המארחת, הוא יחידת תוכנה סטנדרטית שאורזת קוד ואת כל התלות שלו, כך שיישומים יכולים לפעול במהירות ובאמינות מסביבה אחת לאחרת. מיכלים אינם מתמשכים והם מסתובבים מתמונות.

מנוע Docker:

מארח הקוד הפתוח תוכנה בונה ומפעיל את הקונטיינרים. Docker Engines פועלים כיישום שרת-לקוח התומך בקונטיינרים בשרתי Windows שונים ובמערכות הפעלה Linux, כולל Oracle Linux, CentOS, Debian, Fedora, RHEL, SUSE ו-Ubuntu.

תמונות Docker:

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

Docker רישום:

מקום לאחסון ולהורדה של תמונות. הרישום הוא אפליקציה חסרת מדינה וניתנת להרחבה בצד השרת המאחסנת ומפיצה תמונות Docker.

מי משתמש ב-Docker?

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

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

Docker ומפתחים

ניתן לארוז מיכלים על ידי כל סוג של מפתח. אנשים בתעשיית התוכנה מפרידים לעתים קרובות בין מפתחים לפי התמחות - קצה קצה, אחורי או כל ריכוז ביניהם. למרות שבעיקר אתה יכול לראות מפתחים עורפיים אורזים מכולות, כל מי שמכיר את המושגים הבסיסיים של CaaS יכול להצליח בתחום המסוים הזה של מחזור החיים של פיתוח התוכנה. לפני שאתה מוכן לארוז את התלות של היישום שלך, בדוק את developer.oracle.com והכיר את הכלים שבהם תוכל להשתמש כדי לבנות את היישום או התוכנית שלך.

Docker נגד Kubernetes

קונטיינרים של Linux קיימים מאז 2008, אך הם לא היו מוכרים עד להופעתם של קונטיינרים של Docker ב-2013. עם תחילתן של קונטיינרים של Docker, הגיע פיצוץ העניין בפיתוח ופריסה של יישומי קונטיינרים. ככל שמספר היישומים המכילים גדל והשתרע על פני מאות קונטיינרים שנפרסו על פני מספר שרתים, הפעלתם הפכה למורכבת יותר. איך מתאמים, מדרגים, מנהלים ומתזמנים מאות קונטיינרים? זה איפה Kubernetes יכול לעזור. Kubernetes היא מערכת תזמורת בקוד פתוח המאפשרת לך להפעיל את הקונטיינרים ועומסי העבודה של Docker שלך. זה עוזר לך לנהל את מורכבות התפעול בעת מעבר לקנה מידה של קונטיינרים מרובים הפרוסים על פני מספר שרתים. מנוע Kubernetes מתארגן אוטומטית את מחזור החיים של המכולה, ומפיץ את מיכלי היישומים על פני תשתית האירוח. Kubernetes יכול להגדיל או להקטין משאבים במהירות, בהתאם לביקוש. זה כל הזמן מספק, מתזמן, מוחק ומנטר את תקינות המכולות.

יסודות Docker

מושגי הליבה של Docker הם תמונות ומכולות. תמונת Docker מכילה את כל מה שדרוש להפעלת התוכנה שלך: הקוד, זמן ריצה (לדוגמה, Java Virtual Machine (JVM), מנהלי התקנים, כלים, סקריפטים, ספריות, פריסות ועוד.

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

תמונה בסיסית של docker
איור 1

בידוד מול וירטואליזציה

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

מערכת קבצים מצטברת

תמונת מערכת קבצים מצטברים
איור 2

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

כפי שמוצג באיור 2, תמונת Docker עם פריסת WebLogic יכולה להיות מבוססת על תמונה עם תחום Oracle WebLogic Server, שיכולה להתבסס על תמונת WebLogic, המבוססת על תמונת Java Development Kit (JDK), אשר ב- turn מבוסס על תמונת בסיס של Oracle Linux.

Docker רישום

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

Docker Registry גם עוזר לשפר את בקרת הגישה והאבטחה של תמונות Docker המאוחסנות במאגר שלה. הוא מנהל את הפצת התמונות וגם יכול להשתלב עם תהליכי עבודה לפיתוח יישומים. מפתחים יכולים להגדיר את Docker Registry משלהם, או להשתמש בשירות Docker Registry מתארח כמו Docker Hub, Oracle Container Registry, Azure Container Registry וכו'.

Docker Hub הוא רישום Docker מתארח המנוהל על ידי Docker. ל- Docker Hub יש יותר מ-100,000 תמונות מיכל מספקי תוכנה, פרויקטי קוד פתוח ומהקהילה. Docker Hub מכיל תוכנות ויישומים ממאגרים רשמיים כגון NGINX, Logstash, Apache HTTP, Grafana, MySQL, Ubuntu ו-Oracle Linux.

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

איור 3: צילום מסך של Docker Registry
איור 3

Docker כזמן ריצה של Microservices

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

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

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

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

Docker—Two Key Dimensions

Docker משנה את הדרך בה אנו בונים, שולחים ומפעילים תוכנה בשני ממדים שונים:

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

שני הממדים מוסברים בפירוט רב יותר בפסקאות הבאות.

Docker Image—Development to Production

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

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

צילום מסך של docker
איור 4

הסטטיסטיקה מראה כי 65% מכל מקרי השימוש הנוכחיים ב-Docker נמצאים בפיתוח, ו-48% משתמשים ב-Docker לצורך אינטגרציה מתמשכת.

Docker Cloud

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

מצד שני - מכיוון שמכולות Docker פועלות על כל ענן ציבורי מרכזי - הן מהוות תרומה מרכזית להתגברות על דעה קדומה ארוכת שנים נגד עננים ציבוריים: נעילת ספקים. כל ספק ענן גדול מציע כעת את Docker כ-PaaS.

Docker Versions—Maturity of Underlying Technology

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

למרות ש-Docker ושורת הפקודה שלו, הדמון Docker, ה-API שלו וכלים כמו Docker Swarm, Docker Machine ו-Docker Compose התפתחו רק בשלוש השנים האחרונות, תכונות הליבה הבסיסיות זמינות בכל ליבת Linux כבר כמעט עשור. .

דוגמה בולטת לאמץ מוקדם של טכנולוגיית מיכל היא Google. Google השתמשה בקונטיינרים של Linux עוד לפני ש-Docker היה בסביבה. יתר על כן, Google מריץ הכל בקונטיינר. ההערכה היא שגוגל משיקה כמה מיליארדי מכולות בשבוע.

היסטוריית Cgroups ומרחבי שמות

התכונות הבסיסיות של ליבת Linux בהן Docker משתמש הן cgroups ומרחבי שמות. בשנת 2008 הוצגו קבוצות cgroups לליבת Linux על סמך עבודה שנעשתה בעבר על ידי מפתחי Google1. Cgroups מגבילות את השימוש במשאבים של קבוצה של תהליכי מערכת הפעלה ומתחשבים בהם.

ליבת Linux משתמשת במרחב שמות כדי לבודד את משאבי המערכת של תהליכים זה מזה. מרחב השמות הראשון, כלומר מרחב השמות של mount, הוצג כבר בשנת 2002.2

שירותי ענן מכולות

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

כדי להגדיר ולהפעיל סביבת ייצור נדרשת חומרה להפעלת המכולות. תוכנות כגון Docker, יחד עם מאגרים ומנהלי אשכולות, חייבות להיות מותקנות, שדרוג ותיקון. אם מספר קונטיינרים של Docker מתקשרים בין מארחים, יש ליצור רשת. יש להפעיל מחדש מיכלים מקובצים אם הם נכשלים. בנוסף, קבוצה של קונטיינרים המקושרים זה לזה אמורה להיות ניתנת לפריסה בקלות כמו מופע יישום לוגי יחיד. דוגמה לכך יכולה להיות מאזן עומסים, כמה שרתי אינטרנט, כמה מופעים של Oracle WebLogic Server עם שרת אדמין, שרת מנוהל ומסד נתונים. כדי לנהל אפליקציות מכולות בקנה מידה, נדרשת מערכת תזמור של מיכל כמו Kubernetes או Docker Swarm. פריסה, ניהול ותפעול מערכות תזמור כמו Kubernetes יכולה להיות מאתגרת וגוזלת זמן.

כדי להקל ויעיל יותר עבור מפתחים ליצור אפליקציות מכולות, ספקי ענן מציעים שירותי Container Cloud או Containers as a Service (CaaS). שירותי ענן Container מסייעים למפתחים ולצוותי תפעול לייעל ולנהל את מחזור החיים של קונטיינרים בצורה אוטומטית. שירותי תזמור אלה, הנבנים בדרך כלל באמצעות Kubernetes, מקלים על צוותי DevOps לנהל ולהפעיל יישומים מכולים בקנה מידה. Oracle Container Engine for Kubernetes ו-Azure Kubernetes Service הם שתי דוגמאות לשירותי ענן מנוהלים בתזמור קונטיינרים פופולריים.

Oracle Container Engine for Kubernetes הוא שירות מנוהל במלואו, ניתן להרחבה וזמין מאוד שבו אתה יכול להשתמש כדי לפרוס את היישומים המכילים שלך בענן. השתמש ב-Container Engine for Kubernetes (לעיתים מקוצר רק ל-OKE) כאשר צוות הפיתוח שלך רוצה לבנות, לפרוס ולנהל באופן מהימן יישומים מקוריים בענן.

תמונות Docker מ-Oracle

ניתן לארוז מיכלים על ידי כל סוג של מפתח. אנשים בתעשיית התוכנה מפרידים לעתים קרובות בין מפתחים לפי התמחות - קצה קצה, אחורי או כל ריכוז ביניהם. למרות שבעיקר אתה יכול לראות מפתחים עורפיים אורזים מכולות, כל מי שמכיר את המושגים הבסיסיים של CaaS יכול להצליח בתחום המסוים הזה של מחזור החיים של פיתוח התוכנה. לפני שאתה מוכן לארוז את התלות של היישום שלך, בדוק את developer.oracle.com והכיר את הכלים שבהם תוכל להשתמש כדי לבנות את היישום או התוכנית שלך.

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

Docker Hands-On Lab - פיתוח מכולות עם Docker

הפניות

  1. Cgroups (ויקיפדיה)
  2. מרחבי שמות של Linux (ויקיפדיה)