זהו נושא דיון מלווה לערך המקורי שב־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 כמו שעשית יפה)