קורס Docker, Compose and Kubernetes שיעור תרגול: Docker Compose


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

תרגיל ראשון
בחלק השני אתה מבקש שנריץ במכונה של Digital Ocean בענן.
לא עבדתי בעבר עם Digital Ocean, אבל מניח שגם עם יש להם Free Tier, זה דורש מתן כרטיס אשראי והתעסקות בירוקרטית רבה לפני שמגעים לאתגרים הקשורים בתרגיל (שימוש בתכנולוגיה “בעולם האמיתי”).
האם אני טועה ויש שם משהו ממש פשוט להתחלת עבודה (כמו Play with Docker)? אחרת עלול להיות קצת מוגזם מידי עבור רבים.

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

FROM nginx
COPY ./index.html /usr/share/nginx/html

ב’ - בסעיף השלישי אתה מבקש שנכנס עם Shell לקונטיינר כדי לוודא שקבצי ה-HTML אכן נמצאים על ה-Volume. אבל מתוך הקונטיינר איך אפשר להבדיל בין קבצים שבקונטיינר לקבצים ב-volume המנוהל ע"י דוקר (או ממופה מהמכונה המארחת)?
לכאורה אם אשתמש באותו volume בקונטיינר אחר ע"י מיפוי בפקודת ה-run (ללא Dockerfile שכולל העתקה/מיפוי) ואראה את אותם קבצים גם בשרת הזה, כנראה שזו תהיה הוכחה שהקבצים באמת נמצאים ב-volume.
אגב, כשאני מריץ בדיקה ב-exec, אני רואה את קובץ index.html שאני שמתי, אבל גם קובץ שהגיע לשם מה-image של nginx (את 50x.html):

$ docker compose exec server ls -l /usr/share/nginx/html/
total 8
-rw-r--r-- 1 root root 497 Jan 25 15:03 50x.html
-rw-r--r-- 1 root root 137 Jun 18 13:28 index.html

הי,

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

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

  3. לגבי הנושא של ה Volume אז נחזור לזה בפרקים הבאים כשלומדים על Volumes יותר לעומק. פה רציתי להשתמש ב Volume ממש (לא מהמכונה המארחת) ולראות איך דוקר מעתיק ל Volume את הקבצים מהאימג׳. אבל חוזרים לזה בהמשך אז בינתיים עדיף לעזוב את זה - וגם הורדתי את זה מהתרגיל

  4. הי אז כן רציתי להראות בתרגיל הזה איך שדוקר מעתיק את הקבצים שלך לתוך ה Volume כשווליום מתחיל ריק.

בפרק הזה לימדת Volumes, אז אולי חבל שהורדת וגם לכאורה אין בתרגיל הזה סיבוך בהקשר הזה. זה ה docker-compose.yml שאני כתבתי:

version: "3.9"

services:
  server:
    build:
      dockerfile: nginx.Dockerfile
      context: .
    volumes:
      - web-data:/usr/share/nginx/html
    ports:
      - "8081:80"

volumes:
  web-data:

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

אתה יכול להפעיל משורת הפקודה (docker רגיל) מכונת Ubuntu שמחוברת ל Volume הזה ואז אתה יכול לקרוא ולכתוב את הקבצים שיש עליו, בלי קשר לאימג׳ שלך