מבוא לפודמן

1. הקדמה

במדריך זה נבחן את Podman (קיצור של "Pod Manager"), את התכונות והשימוש בו.

2. פודמן

Podman הוא כלי לניהול מכולות קוד פתוח לפיתוח, ניהול והפעלת מכולות OCI. בואו נסתכל על כמה מהיתרונות של פודמן, בהשוואה לכלים אחרים לניהול מכולות:

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

עם זאת, ישנן מגבלות מסוימות לפודמן:

  • זה פועל רק על מערכות מבוססות לינוקס. נכון לעכשיו, Podman פועלת רק על מערכות הפעלה מבוססות לינוקס ואין לה עטיפה עבור Windows ו- MacOS.
  • אין חלופה ל- Docker Compose. לפודמן אין תמיכה בניהול מספר מכולות באופן מקומי, בדומה למה שעושה Docker Compose. יישום של Docker Compose באמצעות ה- Podman backend מפותח כחלק מה- podman-compose פרויקט, אך זה עדיין בעיצומה.

3. השוואה ל- Docker

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

3.1. ממשק שורת פקודה (CLI)

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

עם זאת, הפקודות כמו פודמן נ.ב. ו תמונות פודמן לא יציגו את המכולות או התמונות שנוצרו באמצעות Docker. הסיבה לכך היא המאגר המקומי של פודמן / var / lib / containers בניגוד ל / var / lib / docker מתוחזק על ידי דוקר.

3.2. דגם מיכל

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

פלט לדוגמא עבור גרסת העגינה:

לקוח: גרסה: 17.12.0-ce גרסת API: 1.35 גרסת go: go1.9.2 Git commit: c97c6d6 בנוי: ד '27 בדצמבר 20:11:19 2017 מערכת הפעלה / קשת: Linux / amd64 שרת: מנוע: גרסה: 17.12.0 גרסת API API: 1.35 (גרסה מינימלית 1.12) גרסת Go: go1.9.2 Git commit: c97c6d6 בנוי: ד '27 בדצמבר 20:09:53 2017 מערכת הפעלה / Arch: linux / amd64 ניסוי: שקר

פלט לדוגמא עבור גרסת פודמן:

גרסה: 0.3.2-dev Go גרסה: go1.9.4 Git Commit: "4f4a78abb40fa0e8407e8a55d5a67a2650d8fd96" נבנה: ב 'מרץ 5 11:10:35 2018 OS / Arch: linux / amd64

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

3.3. מצב ללא שורש

כפי שצוין קודם לכן, Podman אינו זקוק לגישת שורש כדי להריץ את פקודותיו. לעומת זאת, Docker, בהיותו תלוי בתהליך הדמון, דורש הרשאות שורש או דורש מהמשתמש להיות חלק מ- העגינה קְבוּצָה כדי להיות מסוגל להריץ את פקודות ה- Docker ללא הרשאת שורש.

$ sudo usermod -aG docker $ USER

4. התקנה ושימוש

נתחיל בהתקנת Podman. ה מידע על podman הפקודה מציגה מידע על מערכת Podman ומסייעת בבדיקת מצב ההתקנה.

מידע על podman $

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

מארח: MemFree: 546578432 MemTotal: 1040318464 SwapFree: 4216320000 SwapTotal: 4216320000 arch: amd64 cpus: 2 שם מארח: core-xenial core: 4.4.0-116-generic os: uptime של לינוקס: 1m 2.64s רישומים לא בטוחים: רישומים: [] registries : רישומים: - docker.io - registry.fedoraproject.org - registry.access.redhat.com חנות: ContainerStore: מספר: 0 GraphDriverName: כיסוי GraphOptions: null GraphRoot: / var / lib / containers / storage GraphStatus: מערכת קבצים מגבה: extfs Diff Overlay Native: "true" תומך ב- d_type: "true" ImageStore: מספר: 0 RunRoot: / var / run / containers / storage

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

4.1. יצירת תמונה

ראשית, נסתכל על יצירת תמונה באמצעות Podman. נתחיל ביצירת a קובץ Docker עם התוכן הבא:

FROM centos: האחרון RUN yum -y להתקין httpd CMD ["/ usr / sbin / httpd", "-D", "FORGRUND"] חשיפה 80 

עכשיו בואו ניצור את התמונה באמצעות ה- לִבנוֹת פקודה:

$ podman לבנות.

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

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

4.2. רישום תמונות זמינות

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

$ פודמן תמונות

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

תג תג מאגר מזהה תמונה נוצר גודל docker.io/library/centos האחרון 0f3e07c0138f לפני חודשיים 227MB 

4.3. הפעלת תמונות

ה לָרוּץ פקודה יוצרת מיכל של תמונה נתונה ואז מריצה אותה. בואו נפעיל את תמונת CentOS שיצרנו קודם

$ podman run -p 80:80 -dit centos

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

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

4.4. מחיקת תמונות

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

$ podman rmi 785188cd988c

4.5. רישום המכולות

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

$ podman ps -a

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

מזהה מכולה תמונה פקודה שנוצרה בשמות נמלי סטטוס eed30719cd37 centos / bin / bash 2019-12-09 02:57:37 +0000 UTC למעלה לפני 14 דקות 0.0.0.0:80->80/udp, 0.0.0.0:80-> 80 / tcp reverent_liskov

4.6. מחיקת מיכלים

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

$ podman stop eed30719cd37 $ podman rm eed30719cd37

4.7. יצירת תרמילים

ה תרמיל ליצור פקודה יוצרת תרמיל. הפקודה create תומכת באפשרויות שונות.

$ podman pod ליצור

ה תרמיל ליצור פקודה יוצרת תרמיל עם מַך מיכל המשויך אליו כברירת מחדל אלא אם כן מוגדר במפורש עם דגל אינפרא כ- שֶׁקֶר.

$ podman pod create --infra = false

מיכל אינפרא מאפשר לפודמן לחבר מיכלים שונים בתרמיל.

4.8. תרמילי רישומים

ה רשימת תרמילים הפקודה מציגה את כל התרמילים הזמינים

רשימת תרמילי $ podman

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

קוד מזהה POD STATUS נוצר מספר מכולות מזהה אינפרא 7e0a68528aed gallant_raman פועל לפני 5 שניות 1 c6d06673c667

כל הפקודות הזמינות של Podman והשימוש בהן ניתן למצוא בתיעוד הרשמי.

5. מסקנה

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

כרגיל, דוגמת הקוד המשמשת במאמר זה זמינה דרך GitHub.


$config[zx-auto] not found$config[zx-overlay] not found