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

מה זה Containerization?

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

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

הבדלים מרכזיים של מכונות וירטואליות

  • (FLT:0)Resource overheadeur:FLT:1 VMs כוללים מערכת ההפעלה המלאה (קריסטל), צריכת ג'יגהבייט של דיסק ו- RAM לכל אחד, למשל, כולל המעלות בדרך כלל למדוד במגבתים ולשתף את הקרנל המארח.
  • (ב) ויקרא י"א: "א' א' י"א י"א י"א, י"א, י"א, י"א, י"א, י"א, י"א, י"א, י"א, י"א, י"א, י"א, י"א, י"א, י"ד).
  • (ב) ,0) זמינות: מכילי ההרחבה 1 (FLT:1) הם יותר ניידים על פני סביבות כי הם מכילים רק את היישום ואת תלותו במשרה מלאה, לא מערכת ההפעלה המלאה.
  • (ב) ⁇ :0 (Isolation:0) ,VMs מספקים בידוד חזק יותר באמצעות היפרבידור-דרג הפרדה. Containers מסתמכים על חללי שם הקרנל ו- cgroups, אשר יכולים להוות אתגרים ביטחוניים אם הם לא מבוטחים.

היתרונות של מהנדסים

  • (FLT:0) אי-הסכמה על סביבות: FLT:1 לנטרל את "זה עובד על המחשב שלי" בעיות - אותו מיכל פועל על מחשב נייד של מפתח, שרת ממריץ, ובייצור.
  • (ב) ,0) ,Efficient CI/CD:FreaLT:1 Build, test, and לפרוס באמצעות אותה תמונת מכולה על פני הצינור.
  • (ב) ,0) , דרוג קלפי: 1: כמרים כמו Kubernetes יכולים ליישר מאות מכולות תוך שניות.
  • (ב) שליטה על תשתיות: 10) דוקדקטים ותגי תמונות מאפשרים לך לעקוב בדיוק איך נוצר יישום.

המונחים:

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

תמונות ושכבות

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

תגית: Efficient Dockerfiles

דוקרפטה היא מסמך טקסט המכיל את כל הפקודות כדי להרכיב תמונה.הפרקטיקות הטובות ביותר כוללות:

  • החל מדימוי בסיס מינימלי (למשל, 0 או 1)
  • שילוב בין ה-FLT:2 הוראות לצמצום ספירת השכבות.
  • שימוש ב-FLT:3 כדי לא לכלול קבצים מיותרים מההקשר הבנייה.
  • מינוף רב-שלבי בונה כדי להפריד בין בניה ותלויים בזמני ריצה.

דוגמה: Dockerfile snippet עבור יישום Node.js:

FROM node:18-alpine AS base
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
FROM node:18-alpine
WORKDIR /app
COPY --from=base /app/node_modules ./node_modules
COPY . .
CMD ["node", "server.js"]

מכיל Lifecycle

(ב) "התחילה" (במדבר כ"ד, ב) "וַיָּעָשָׂה וּדְהִיתִי" (בראשית כ"ד, כ"ד) , ).

שאלות נפוצות למהנדסים

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

כיצד Docker משפר את זרימת העבודה?

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

על מנת לשלב את דוקר עם CI/CD, ראה:0Docker's official CI/CDBuildFLT:1.

מה הם שיקולי הביטחון כאשר משתמשים ב- Docker?

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

  • (ב) ב[[1924]], [[1924]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]]]]]], [[1924]]]]]]]]
  • (ב) ,0) ,Use Read-Only Root filesystems: ⁇ FLT:1 (הר המערכת של המכולה ככתוב בלבד (ראה פרק 12) ולהשתמש כרכים עבור נתונים מתפתלים.
  • (ב) עיין בתמונות:0) המשך תמונות מעודכנים: איור 1 (FLT:1) באופן קבוע לסרוק תמונות עבור פרצות באמצעות כלים כמו Docker Scout או Trivy.
  • (FLT:0)Use User Namespaces:FLT:1) Remap משתמשים למשתמשים שאינם מארחים שאינם מועדים להגביל את הנזק מהסלמה פריבילגיה.
  • (ב) ,0) , (ב) אין צורך ב[דרוש מקור] [ב], לא ניתן ל[[המאה ה-1] גישה.

(ב) ,0) ,9.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.

כיצד אתה מייעל את גודל התמונה?

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

  • תמונות בסיס דקות (FLT:0)Choose Skinny Base Images:FLT:1Build לינוקס אלפיני תמונות הם סביב 5 MB, בהשוואה ל-150+MB עבור דביאן מלא.
  • (ב) ⁇ :0) ,Use Multi-שלב בונה:FLT:1 , בנפרד לבנות תלות (למשל, מדפים, מהימנות נוקד) מהתמונה הסופית של זמן ריצה.
  • (ב) ויקרא י"ד: "ה' אלקים" (בראשית כ"ד, ט)
  • (ב) ,0) ,(ב) ,(ב) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ב[[1924]], [[1924]]]], [[1924]]]], [[1924]]]], [[1924]]]]]], [[1924]]]], [[1924]]]]]]

למד עוד על כך (ב):0) שיטות העבודה הטובות ביותר של הוראת ההרחבה:

איך עובד Docker Networking?

Docker מספק מספר מנהלי רשתות כדי לשלוט בתקשורת של מכולות:

  • (ברידג':0)Bridge:IRFLT:1; Default Drivers על אותה רשת גשר יכול לתקשר באמצעות כתובות IP. Portמיפוי (ראהFLT:20) חושף את נמלי המכולות למארח.
  • (FLT:0) Host:veFLT:1 מסיר את בידוד הרשת - המכל משתמש בערימה של הרשת של המארח באופן ישיר.
  • (ב) ,0) ,Overlay:BuildFLT:1 , Enables תקשורת בין מכולות על פני מארחים רבים של Docker, בדרך כלל בשימוש עם Docker Swarm או Kubernetes.
  • (ב) ,0) מ"מקראובלן: 1 (מ"ג)" (Ablan:0) מ"מ (Ac)" (AfLT) הוא כתובת MAC לכל מיכל, מה שהופך אותם מופיעים כמכשירים פיזיים ברשת.

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

כיצד אתה מקליד נתונים Persistence in Containers?

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

  • (ב) ,0) ,Volumes: FLT:1 מנוהל על ידי דוקר, מאוחסן במדריך ייעודי על המארח (ראה 10:21) מעדיפים ייצור כי הם ניידים וניתן לשתף אותם בין מיכלים.
  • (ב) ,0) גדלות: FLT:1 Map מארחת במאית ישירות לתוך מיכל.

השתמש בדגל ה-F:22LT או FLT:23 כדי לחבר כרכים. עבור מסדי נתונים, תמיד להשתמש כרכים בשם כדי להבטיח שהנתונים ישרדו מחדש.

מה זה Docker Compose ומתי כדאי להשתמש בו?

Docker Compose הוא כלי להגדרת והפעלה של יישומים המכילים רב-כילים Docker.You כותב קובץ ספקטרום:24 אשר מפרט שירותים, רשתות, ו כרכים.עם פקודה אחת (OVAFLT:25), כל השירותים מתחילים יחד. השתמש Compose לפיתוח מקומי, סביבות מבחן, פריסות ייצור פשוטות שאינן דורשות תזמורת.

לא מומלץ לתקבץ ייצור בקנה מידה - כי, לשקול Kubernetes או Docker Swarm.

איך דוקר חוזר לקובטרנטס?

Kubernetes היא פלטפורמה תזמורתית לניהול מכולות על פני אשכול של מכונות.בעוד דוקר מטפל יצירת מכולה וריצה, Kubernetes Automates הפריסה, דרוג, איזון, ו- self-healing.Docker יכול לשמש כמו מיכל לרוץ זמן תחת Kubernetes, אבל Kubernetes גם תומך מיכלד ו-CRI-O מהנדסים בדרך כלל להשתמש Docker כדי לבנות תמונות ולאחר מכן לפרוסס על קוברים.

(ב) ראו את ה-FLT:0) ,Kubernetes Basics הדרכות

מסקנה

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