PracticU

Publish Image

בלי כתוביותעם כתוביות
PracticU › קורס Docker - עם Swarm Cluster › Publish Image
מילון מושגים:
תמונה - קובץ גרפי המוצג על המסך. בהקשר של וירטואליזציה או Docker, תבנית מוכנה שממנה יוצרים מכונה או קונטיינר.
Docker Image - תבנית לקריאה בלבד שמכילה אפליקציה ותלויותיה, וממנה מריצים קונטיינרים ב-Docker.
Docker - פלטפורמה להרצת אפליקציות בתוך קונטיינרים מבודדים וקלים, כדי שירוצו באופן אחיד בכל סביבה.
קונטיינר - חבילה קלה ומבודדת שאורזת אפליקציה עם כל תלויותיה, ורצה באופן אחיד בכל סביבה, למשל ב-Docker.
Dockerfile - קובץ טקסט עם הוראות לבניית Docker Image, המגדיר את הבסיס, הקבצים והפקודות שיירוצו.
תגית - סימון בקוד, למשל ב-HTML, שתוחם רכיב ומגדיר את תפקידו או תכונותיו. גם תווית לסימון וקיטלוג פריטים.
PowerShell - סביבת שורת פקודה ושפת סקריפטים של מיקרוסופט לניהול אוטומטי של מערכות Windows ושירותים.
כתובת IP - מספר שמזהה באופן ייחודי מכשיר ברשת מבוססת פרוטוקול IP, ומאפשר לשלוח אליו ולקבל ממנו מידע.

Publish Image
אימג' של Docker שעובד טוב על מחשב אחד צריך לעבור לשרת אחר, ולשם כך צריך מאגר משותף שממנו מושכים אותו. בהרצאה הזאת מעלים את האימג' ל-Docker Hub ומשם מורידים אותו לשרת השני.
השלבים העיקריים
1. הרשמה ל-Docker Hub: ההרשמה חינמית ודורשת כתובת אימייל. לפי ההרצאה החשבון החינמי כולל מאגר ציבורי ללא הגבלה ומאגר פרטי אחד, ועבור חמישה מאגרים פרטיים משלמים כ-7 דולר לחודש.
2. יצירת מאגר: מאגר הוא אוסף של אימג'ים בעל שם. מומלץ לשייך מאגר לפרויקט אחד ולהבחין בין הגרסאות בעזרת תגיות.
3. הרצה והתאמה אישית: מריצים את האימג' במצב מנותק עם docker container run ומשנים בתוכו קובץ אתר. המרצה מציין שזו התאמה פשוטה לצורך התרגול בלבד, וש-Dockerfile הוא הדרך המסודרת לבנות אימג'.
4. יצירת אימג' מקונטיינר: עוצרים את הקונטיינר ומשתמשים ב-docker container commit. אי אפשר לבצע commit לקונטיינר שרץ. האימג' שנוצר כך אינו מתעד מה נעשה בתוכו, ולכן קשה לשחזר אותו, וזו הסיבה לעדיפות של Dockerfile.
5. תיוג: docker image tag נותן לאימג' שם מלא בפורמט של המאגר ותגית. התגית latest מסמנת את הגרסה האחרונה. שתי תגיות יכולות להצביע על אותו Image ID, ומחיקת תגית אחת לא מוחקת את האימג' כל עוד יש תגית אחרת שמצביעה עליו.
6. התחברות ודחיפה: docker login מתחבר ל-Docker Hub או לשרת רישום פנים-ארגוני, ו-docker image push מעלה את האימג'. שכבות שכבר קיימות במאגר לא עולות שוב, ולכן ההעלאה השנייה מהירה מאוד.
7. התקנה על השרת השני: מתקינים את Docker באמצעות מודול PowerShell מוכן, מפעילים את השרת מחדש ובודקים עם docker version. אם שירות Docker Engine לא עלה, מפעילים אותו ידנית.
8. משיכה והרצה: docker pull מושך את האימג' מהמאגר, וההרצה חושפת את פורט 80. כתובת ה-IP של הקונטיינר מתקבלת מ-docker container inspect, והאתר נפתח מהשרת הראשון.
פקודות שהופיעו בהרצאה
docker container exec -it, docker container commit, docker image tag, docker image push, docker image history, docker image inspect, docker login, docker pull, docker container inspect
שימו לב
שינוי קבצי הקונטיינר ישירות מתוך תיקיית הנתונים של Docker על המארח עלול לשבור אותו, וכך קרה במהלך ההרצאה. לכן עדיף לבנות את כל השינויים מתוך Dockerfile.
בסיום ההרצאה יש במאגר האימג' עם התגיות v1 ו-latest, ושרת שני שמריץ את אותו אימג' בלי להתקין שום דבר ידנית מעבר ל-Docker עצמו.
השיעור הבא בקורס: DockerFile

פרקי ההרצאה: Publish Image

  1. 00:00

    העלאת אימג' מקומי למאגר Docker Hub

  2. 00:43

    יצירת רפוזיטורי חדש ב-Docker Hub

  3. 02:03

    הבדל בין מאגר ציבורי למאגר פרטי

  4. 03:56

    הרצת האימג' עם שם ופורט חשוף

  5. 06:22

    כניסה אינטראקטיבית לקונטיינר פעיל

  6. 08:39

    הרצת פקודה בודדת בתוך קונטיינר

  7. 10:21

    יצירת אימג' זהב (Golden Image) מותאם

  8. 11:38

    איפה נמצאים קבצי הקונטיינר בווינדוס

תמלול ההרצאה: Publish Image

הטקסט המלא של הדקות הראשונות בהרצאה «Publish Image» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    טוב חברים, הגיע הזמן שאנחנו נעשה הרצאה איך מעלים את האימג' שלנו לתוך הרפוזיטורים ומפיצים אותו לשרת השני שלנו שכרגע סיים התקנה. אז אנחנו רוצים בעצם להעלות את האימג' לתוך מאגר משותף של האתר docker שנקרא hub. docker.com אנחנו רוצים לעשות לשם פוש לאימג' שלנו.

  2. 00:33

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

  3. 01:00

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

  4. 01:23

    Repository Found for Practicue, בואו נעשה אחד חדש. נקרא לרפוזיטורי הזה, איך נקרא לו? IS, נניח פרוג'קט אחד, פרוג'קט, פרוג'קט, פרוג'קט אחד.

  5. 01:43

    נניח שזה מאגר של פרוג'קט אחד, ה-IS. אפשר ככה לעשות? אבל הנה, אם הוא נותן לי לעשות כזה דבר. לא, אסור לי לעשות זה. אז נעשה פרוג'קט אחד, מקף ה-IS.

  6. 01:58

    זה שרת ה-Web של הפרויקט, אוקיי? אם אני יכול לעשות ככה, אני יכול לעשות סתם ה-IS. איך שאני רוצה אני יכול לעשות את זה. אז בואו נעשה את זה פשוט.

  7. 02:12

    עכשיו שימו לב חינם זה public וללא מגבלה אם אני רוצה private שזה אומר אף אחד לא יוכל לגשת לאימג'ים שלי זה אימג'ים הסודיים שלי אז אחד אני אקבל חינם ואם אני רוצה יותר מאחד זה כבר עולה לי כסף אז אם אני עושה את הרפוזיטורי הזה פרקטי QIS כחינמי אם אני עושה פרקטי QIS כפרייבט רק אחד אני אוכל לקבל

  8. 02:48

    אם אני רוצה יותר מאחד, אני אצטרך לשלם 7 דולר כל חודש עבור חמישה מאגרים פרטיים. כל מאגר זה למעשה שרת, כן?

  9. 03:02

    זה בוקר, זה מאגר. אז לדוגמה, אני רוצה ISV1, ISV2, כל אחד זה מאגר, נקרא, כן? רפוזיטורי. נעשה פרויקט אחד, IS.

  10. 03:20

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

  11. 03:43

    יצרתי פרוג'קט IS-1, ולכאן אני אעלה עכשיו את הקונטיינר שלי. בינתיים אין לי פה כלום, תכף נעלה. אז יש לנו docker ps-a אנחנו רואים שאין לנו שום דבר שרץ, docker images אנחנו רואים איזה אימג'ים יש לנו, של אימג' כזה זה האימג' שלנו בואו נריץ אותו ונקנפג אותו נקסטם אותו אז איך אנחנו מריצים אותו docker container run מפעילים

  12. 04:25

    אותו מינוס d כדי שלא יתקע לי את ה-cmd שיהיה דיסקונקטד מינוס p שיחשוף לי פורט מספר 80 החוצה מבפנים החוצה יפתח לי פורט עכשיו אני יכול לתת לו גם שם חיבה לדוגמה name וב שלוש, וב אחד, שרת וב שלי, איך שאתם רוצים אתם יכולים לקרוא לו, נניח וב, ואיזה אימג' אני רוצה.

  13. 04:54

    עכשיו השם הזה זה סתם שם העמודה האחרונה פה, אתם רואים? כשהוא רץ, יהיה לו עמודה אחרונה שם. אז בוא נקרא לו וב אחד, שרת וב הראשון שלי. יופי, הרצתי את האימג', בוא נעשה IP קונפיג, נראה את ה-IP שלו, ניכנס פה לשרת החדש שכרגע סיים התקנה, אין בו כלום עדיין, נדביק לו את ה-IP מ-21, מ-29, אנחנו רואים שאתר ה-Web עובד, בואו נוסיף

  14. 06:06

    קונטנט משלנו, docker ps- לא ייתן לנו כלום, עכשיו אנחנו ניכנס פנימה לתוכו, docker container exec- אינטראקטיבית, לפי השם אנחנו יכולים לציין Web אחד, רואים אני הולך לפי העמודה האחרונה של Names, הבנתם זה עמודות ופשוט זה לא נכנס לרוחב, זה כאילו עבר שורה זה הכל כאילו שורה אחת אז יש לו את ה-ID שאני יכול ללכת לפי ה-ID ואני יכול ללכת לפי השם

  15. 06:51

    אז אני אומר לו תפעיל בצורה אינטראקטיבית בקונטיינר שנקרא web1 פקודת cmd אוקיי ואני בתוך הקונטיינר איך אני יודע שאני בתוך הקונטיינר לפי השם אתם רואים אני בתוך הקונטיינר אם אני לוחץ ctrl pq אני יוצא החוצה אתם רואים אני עכשיו יצאתי החוצה אני בפאור של הרגיל שלי ואז כשאני עושה host

  16. 07:16

    name פה אני רואה שאני סרבר 2019. אוקיי בואו בואו נחזור חזרה לתוך הקונטיינר docker attach attach זה לקפוץ חזרה לקונטיינר נניח web אחד טרול pq לא יודע למה הtouch לא עובד לי לא יודע טוב בואו נעשה עוד פעם נריץ עוד פעם cmd ניכנס לתוך תיקיית inet pub בואו נעשה איזה דיר td-inet-pub,

  17. 08:16

    td-www-root, דיר, נעשה אקו 111 לתוך קובץ, בסוף הקובץ של html. יופי.

  18. 08:32

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

  19. 08:56

    אופציה של cmd/c להריץ פקודה ואז למחוק אותה לסגור את הסשן להריץ פקודה ולסגור את הסשן אז יכלתי לנצל את זה ולכתוב דבר כזה כמו שעשינו פה רק הייתי אומר לו אני לא צריך אינטראקטיבית להיכנס פנימה תעשה פקודה כלשהי ותסגור את הסשן איזה פקודה echo 222 לתוך קובץ איפה נמצא הקובץ הקובץ נמצא באותו הבנתם?

  20. 09:38

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

  21. 10:02

    הופה, בואו נראה עכשיו. קונטרול F5, הופה, נהיה לנו 222. אם נעשה עוד פעם, נהיה לנו 333. אז למעשה עשינו, לקחנו איזשהו אימג' ועשינו אותו מותאם לעצמנו.

  22. 10:26

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

  23. 10:41

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

  24. 10:59

    אז מה יש לנו? יש לנו כרגע קונטיינר שרץ, מכונה וירטואלית שעובדת ואנחנו רוצים להפוך אותה לאימג' קבוע, לדחוף אותה לשרת ולהפיץ אותה לכל השרתים שלנו.

  25. 11:19

    אז בואו נעשה ככה, אנחנו עושים קודם כל docker stop, קודם כל עוצרים את האימג' הזה, את הדוקר הזה, עצרנו את המכונה הווירטואלית, דרך אגב, אתם יודעים איפה הקבצים שלה?

  26. 11:41

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

  27. 11:49

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

  28. 12:05

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

  29. 12:32

    בואו ניכנס לאחד השכבות, אני אחזור ויש פה קובץ איזה קובץ יש פה יש פה קובץ בוא נראה אותו מסוג vhd אנחנו יכולים ממש להיכנס ולראות אותו אנחנו יכולים לעשות פה right click mount להפעיל דיסק מנג'מנט הנה אתם רואים פה דיסק מנג'מנט ממש לראות מה קורה בתוך הvhd הזה רק צריך לתת לו איזה שיעוט בשביל שזה יעבוד ניתן לזה עוד e זה לא משנה לי אני ממש יכול

  30. 13:15

    להיכנס ולראות את הקבצים בתוך האימג' INETPUB, WWROOTH, קובץ HTML, שימו לב אני מבחוץ ניגש ואני עושה פה open with notepad, notepad ובסוף אני רואה 1, 1, 2, 2, 3, 3. בואו נוסיף לזה AIA, נעשה פייל סייב, הדוקר שלנו עובד, בואו נתחבר אליו, דוקר אקזק, איפה יש לנו פה אקזק, דוקר אקזק CMD,

  31. 13:56

    ניכנס ל-INETPUB, www.root.dir ואנחנו בתוך המכונה הווירטואלית יכולים לראות את הקובץ של isstart.html תסתכלו התווסף aaa ואם אני מוסיף בווינדוס מבחוץ שימו לב מבחוץ עכשיו bbb ושומר אותו זה מבחוץ של המכונה הווירטואלית מבחוץ של דוקר זה גם מתווסף

  32. 14:28

    בפנים זה בפנים נכון שאני בפנים שהוא bbb ואם אני אעשה פה echo לא יודע מה ccc לתוך

לקורס המלא: קורס Docker עם Swarm Cluster

ההרצאה הקודמת: הרצה ראשונה של Container

ההרצאה הבאה: DockerFile

הרצאות קשורות מקורסים אחרים

  • Download Image
  • Publish WebAPI on AWS
  • Glance image service
  • הוספת דרייברים ל-IMAGE

קורסים נוספים במסלול

  • קורס AWS - ניהול מכונה וירטואלית בענן
  • קורס Terraform - DevOps - Azure & AWS
  • קורס קוברנטיקס - Kubernetes
  • קורס DevOps - Ansible
  • קורס PowerShell
  • קורס Git ו-GitHub עם Visual Studio