Docker – חלק שני

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

מנוע Docker מורכב משני חלקים: צד שרת וצד לקוח. בצד השרת קיים Daemon שמנהל את המכלים (containers). צד הלקוח "מדבר" עם ה- Daemon (יכול לחפש, להוריד או לאחסן Container Image ועוד…)

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

הפקודה docker ללא פרמטרים מציגה את כל האפשרויות שהפקודה תומכת בה:

כדי לדעת איזה גרסת docker מותקנת נריץ את הפקודה הבאה:

ניתן לראות שגרסת הקליינט וגרסת השרת היא 0.53. בנוסף הפקודה מספקת לנו את התובנה שהשרת "חי" ועונה לבקשות שלנו.

Docker Hub Registry הינו מחסן (בענן) בו שמורים תמונות מראה של מכלים (container images). כדי לחפש מיכל שנקרא tutorial נריץ את הפקודה הבאה:

ניתן לראות שנמצאה התאמה אחת לבקשה: learn/tutorial (הערה: learn זה שם המשתמש, tutorial זה שם המיכל)

ניתן להוריד (מהמחסן) container image בעזרת פקודה pull. בפקודה הבאה אנו מורידים את ה- container image שנקרא tutorial

ניתן לראות שהפקודה גרמה להורדה של מס' images (כל container image מכיל בדרך כלל מס' שכבות – layers)

מיכל הוא מעין תהליך שרץ בתוך קופסה. המיכל מכיל את כל מה שהתהליך זקוק לו כדי לרוץ (מערכת קבצים, ספריות משותפות – shared libraries וגם כמובן shell). אבל בשלב זה שום דבר לא רץ בתוך המיכל. אם נריץ פקודה בתוך המיכל נגרום להתנעה של תהליכים אלו במיכל.

הפקודה הבאה מדפיסה Hello World במיכל. כאמור הפקודה "מתניעה" את עבודת המיכל ולאחר סיום העבודה של המיכל הוא שוב מפסיק את עבודתו.

הערה: לפקודה שני חלקים. תחילה מציינים את שם המיכל ואח"כ את הפקודה שרוצים להריץ בו.

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

כדי לשמור באופן קבוע את מצב המיכל יש לבצע commit. תחילה יש לברר את מס' המיכל (מספיק לזכור 3-4 ספרות ראשונות) ואז להריץ את פקודת ה- commit הבאה:

מהפקודה הבאה ניתן ללמוד מס' דברים: מערכת ההפעלה היא "אובונטו 12.04", מס' המיכל הוא 6982a9948422 והפקודה שנוספה למיכל היא apt-get install ping.
אנו שומרים את המצב במיכל חדש שנקרא learn/ping (שימו לב שמס' המיכל השתנה והוא עתה: effb66b31edb)

המיכל החדש (learn/ping) זמין לכל משתמשי הענן. נריץ בתוכו את הפקודה ping לכתובת www.google.com

תהליך ה- ping רץ בתוך המיכל. באמצעות הפקודה ps נקבל את מספר המיכל שלו, ובאמצעות הפקודה inspect נקבל נתונים נוספים עליו:

ניתן ללמוד את שם ה- host, כתובת ה- IP, הפקודה שרצה, מצב הריצה של המיכל ועוד נתונים נוספים…

השלב האחרון יהיה לשמור את המיכל בענן (Docker Hub Registry). נעשה זאת באמצעות הפקודה

בשלב זה ה- container image זמין בענן לכל משתמשי docker.

סיכום: במאמר זה עברתי על המדריך הבסיסי באתר. במאמרים הבאים אציג פקודות מתקדמות יותר, אציג כיצד להתקין את docker (שרת / לקוח) במחשב/שרת שלכם ועוד…

3 תגובות בנושא “Docker – חלק שני”

  1. היי,
    אשמח לדעת מהי משמעות / דרך ההטמעה ? והעלויות של docker ?

    כמו כן, האם docker היא שירות שניתן רק בענן? או גם על גבי שרתים פיזיים?

    תודה 🙂

  2. היי אילן,

    רציתי ברשותך לשאול,

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

    הייתי רוצה להתקין של ההוסט עצמו איזשהי מערכת IDS / TCPDUMP על מנת לנטר את התעבורה ביניהם וגם החוצה.

    האם הדבר אפשרי? מה הפרוצדורה לכך?

    תודה!

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *