Docker

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

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

Docker Inc
מפתח Docker
מחזור חיים 13 מרץ 2013; (2013-03-13) – הווה
גרסה אחרונה 27.3.1 (20 בספטמבר 2024) עריכת הנתון בוויקינתונים
מערכת הפעלה לינוקס, macOS, Microsoft Windows, מערכת הפעלה דמוית יוניקס עריכת הנתון בוויקינתונים
נכתבה בשפות Go עריכת הנתון בוויקינתונים
סוג רישיון רישיון קנייני, אפאצ'י 2.0 עריכת הנתון בוויקינתונים
קוד מקור https://github.com/moby/moby עריכת הנתון בוויקינתונים
docker.com
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית

אופן השימוש בקונטיינרים דומה במובן מסוים למכונה וירטואלית (VM), אך מאחר שכלל הקונטיינרים חולקים ליבה אחת, שימוש בהם גוזל מעט משאבים ביחס למכונות וירטואליות.[2] הקונטיינרים הם יחסית קלי משקל, כאשר מספר קונטיינרים יכולים לרוץ על מחשב אחד בו-זמנית, ואף לתקשר אחד עם השני.

התוכנה מהווה פלטפורמה כשירות (PaaS), והיא משתמשת בווירטואליזציה ברמת מערכת ההפעלה. זאת, בניגוד למכונה וירטואלית. המערכת תומכת בריצה על גבי Windows, macOS ולינוקס.

המערכת פותחה על ידי חברת Docker, Inc. בתחילה התמקדה בפיתוח עבור לינוקס, ובשל כך המערכת משתמשת בתכונות מסוימות של ליבת לינוקס כמו cgroups, ו-Kernel Namespaces, וכן במערכת טעינת קבצים (Union Capable) כגון OverlayFS ואחרים.[3][4] ניתן להשתמש ביכולות הליבה, למשל, על מנת לנטר את פעילות הקונטיינרים.

מאז גרסה 0.9, המערכת כוללת את הספרייה libcontainer המאפשרת להשתמש ישירות ביכולות הליבה של לינוקס, וזאת בנוסף לשימוש בממשקים מופשטים באמצעות libvirt,‏ LXC ו-systemd-nspawn.

ארגונים מרכזיים שתרמו בשנת 2016 לפרויקט Docker הם מיקרוסופט, IBM, גוגל, סיסקו, וואווי, ו-Red Hat.

היסטוריה

עריכה

החברה Docker Inc נוסדה על ידי כאמל פונאדי, סולומון הייקס וסבסטיאן פאהל בשנת 2010, לאחר שהייקס החל לתכנן את הפרויקט בצרפת כפרויקט פנימי בחברת dotCloud. המערכת הוצגה לציבור לראשונה בכנס מפתחי פייתון – PyCon בשנת 2013. היא שוחררה כתוכנת קוד פתוח במרץ 2013. בתקופה זו, השתמשה דוקר ב-LXC בתור סביבת הביצוע שלה כברירת מחדל. כשנה לאחר מכן, עם שחרור גרסה 0.9 של דוקר, הוחלפה LXC ב-libcontainer.

ב-19 בספטמבר 2013, Red Hat ודוקר הודיעו על שיתוף פעולה סביב פדורה, Red Hat Enterprise Linux,‏ OpenShift.

בסוף שנת 2014, דוקר הודיעה על שותפות עם Stratoscale, ומעט לאחר מכן אף IBM הודיעה על שותפות אסטרטגית עם דוקר ועל כך שניתן להשתמש בתוכנה עם שירותי הענן של IBM. בינואר 2017 בעת ניתוח של מאפייני פרופילים ב-LinkedIn, נמצא כי נוכחות Docker גדלה ב-160% מאז 2016.

עד לשנת 2017, התוכנה הורדה יותר מ-13 מיליארד פעמים.

בשנת 2017, יצרה דוקר את "מדריך מובי" למחקר ופיתוח פתוחים.[5]

אופן פעולה

עריכה
 
דוקר משתמשת בממשקים שונים כדי לגשת לתכונות בליבת לינוקס.

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

הקונטיינר מיועד לרוץ על כל מערכת לינוקס, ווינדוס או מק, בין אם על ענן, ובין אם על מחשב מקומי (On-premises).

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

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

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

שילוב עם תשתיות שונות

עריכה

דוקר יכולה להשתלב עם תשתיות פופולריות רבות, בהן Amazon Web Services,‏ Ansible,‏ CFEngin,‏ Google Cloud Platform,‏ IBM Bluemix,‏ HPE,‏ Stackato,‏ Jelastic,‏ Jenkins,‏ Kubernetes,‏ Microsoft Azure,‏ OpenStack נובה, OpenSVC,‏ Oracle ועוד.

ב-15 באוקטובר 2014, הודיעה מיקרוסופט על מנוע הדוקר עם המהדורה הבאה של Windows Server, ועל תמיכה מקומית של מערכות שרת-לקוח של Windows בדוקר.

רכיבים

עריכה

דוקר מורכבת משלושה חלקים:

  • תוכנה: תוכנת ה-Daemon (תוכנית שרצה כתהליך רקע) של דוקר נקראת "dockerd" והיא אחראית על הליך יצירת הקונטיינרים והאובייקטים הקיימים בהם. התוכנה מאזינה לבקשות שנשלחות דרך מנוע ה-API של דוקר. ניתן להשתמש בממשק שורת הפקודה (CLI) על מנת ליצור אינטראקציה עם התוכנה.
  • אובייקטים: אובייקטים בדוקר הם ישויות שונות המשמשות להרכבת האפליקציה. שלוש הישויות העיקריות הן Images, קונטיינרים, ו-Services. על גבי ה-Image ניתן לבנות את הקונטיינרים והם מהווים למעשה קובץ ההוראות הנדרשות לבנות את הקונטיינר (כמעין תבנית). Service נועד לאפשר לקונטיינרים לגדול בין תוכנות Deamon שונות.
  • רישומים (Registries): מיקומים בהם נמצאים Images שונים. המרכזי שבהם הוא dockerhub, בו ניתן ליצור ולשתף Images בקלות.

כלים

עריכה
  • דוקר-קומפוז (docker-compose) הוא כלי הנועד להגדיר ולהריץ אפליקציות המשתמשות בכמה קונטיינרים (Multi-container). הקלט לכלי נכתב בפורמט YAML (פורמט נוח לקריאה המשמש לקובצי קונפיגורציה). ניתן להשתמש בשורת הפקודה של דוקר-קומפוז על מנת להריץ פקודות על מספר קונטיינרים בו זמנית – למשל, בניית Images, הרצת קונטיינרים שנעצרו, ועוד. דוגמה לקובץ docker-compose.yml בסיסי, המגדיר שני שירותים, web, ו-redis. שירות ה-web משתמש ב-Image הנמצאת בתיקיה הנוכחית. שירות redis משמש למשיכת Image מהרישום הציבורי של דוקר – דוקרהאב (בו קיימים קובצי Image שניתן להוריד אותם ולהשתמש בהם):
version: "3.9"
services:
  web:
    build: .
    ports:
      - "8000:5000"
  redis:
    image: "redis:alpine"
  • דוקר-סוורם (docker-swarm) הוא כלי לניהול ופריסה של קונטיינרים. הכלי מאפשר למשתמש לנהל מספר קונטיינרים המופעלים על גבי כמה מערכות יחדיו. אחד היתרונות המרכזיים של הכלי הוא רמת זמינות גבוהה לאפליקציות.

פקודות בסיסיות

עריכה

על מנת להעלות קונטיינר, יש להשתמש בפקודה docker run -it -d <container-name>

על מנת להריץ פקודה בקונטיינר, למשל, הדפסת 'hello', יש להשתמש בפקודה docker exec -it <container_id_or_name> echo "hello"

על מנת לראות את רשימת הקונטיינרים הקיימים, יש להשתמש בפקודה docker ps -a

על מנת להוריד קובץ Image, יש להשתמש בפקודה docker pull <dockerimage>

ראו גם

עריכה

קישורים חיצוניים

עריכה
  מדיה וקבצים בנושא Docker בוויקישיתוף

הערות שוליים

עריכה
  1. ^ Docker frequently asked questions (FAQ), Docker Documentation, ‏2022-09-15 (באנגלית)
  2. ^ What is a Container? - Docker, www.docker.com, ‏2021-11-11 (באנגלית אמריקאית)
  3. ^ "Select a storage driver documentation". Docker documentation. אורכב מ-המקור ב-2016-12-06. נבדק ב-2016-12-07.
  4. ^ "Docker Documentation: Kernel Requirements". docker.readthedocs.org. 2014-01-04. אורכב מ-המקור ב-2014-08-21. נבדק ב-2014-08-20.
  5. ^ Www linux co uk Says, Demystifying the Relationship Between Moby & Docker – Collabnix (באנגלית בריטית)