קורס docker שיעור תרגול שימוש ב Docker


זהו נושא דיון מלווה לערך המקורי שב־https://www.tocode.co.il/bundles/docker/lessons/lab-using-docker

היי @ynonp, עבורי היו שתי בעיות עם תרגיל 3.

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

    docker run -d ubuntu

לא משאיר את הקונטיינר פעיל (אצלי עלה ונסגר כמעט מיד).
כדי להשאיר אותו פעיל, הפעלתי bash ב-tty אינטראקטיבי:

docker run -it ubuntu /bin/bash

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

בעייה שנייה:
לכאורה פקודת ifconfig לא מגיעה על ה-image של ubuntu (שנכון לעכשיו זה כנראה 20.04).
רק אחרי שבקונטיינר הרצתי:

apt-get update
apt install -y net-tools

יכולתי להשתמש ב-docker exec כדי להריץ ifconfig ולראות את כתובות ה-IP (בהנחה שזה באמת מה שרצית שנעשה בתרגיל?).
אגב, לכאורה אפשר (ונדמה לי שהזכרת זאת) לאתר את כתובת ה-IP עם docker inspect:

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $INSTANCE_ID

תודה תיקנתי את התרגיל

בשביל להפעיל את הקונטיינר ברקע ושימשיך לפעול אנחנו צריכים פקודה שתישאר ״פעילה״. הפקודה bash באמת נשארת פעילה כל עוד יש לה קלט ובשביל זה היית צריך להפעיל אותה עם המתגים i ו t ובלי d, אבל אז אתה מאבד את המסוף. הפקודה sleep infinity נשארת פעילה ברקע ועובדת טוב יותר עם d.

לגבי כתובת ה IP הפקודה שהצעת באמת מחזירה את כתובת ה IP אבל מבחוץ - כלומר את כתובת ה IP שדוקר נתן למכונה. לפעמים נרצה לראות שהיא תואמת לכתובת ה IP כמו שהמכונה רואה אותה. באמת הפקודה ifconfig לא מותקנת כברירת מחדל באימג׳, אז שיניתי בתרגיל להשתמש בפקודה hostname שכן נמצאת שם. בכל מקרה כדאי להכיר גם את ה docker inspect שכתבת ואני מראה אותו בהמשך הקורס

 docker run -it --rm -v ${PWD}:/usr/src/myapp -w /usr/src/myapp elixir elixir helloworld.exs

אצלי הפקודה הזאת עבדה בpowershell

וזאת עבדה ב-CMD:

docker run -it --rm -v "%cd%":/usr/src/myapp -w /usr/src/myapp elixir elixir helloworld.exs

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