PracticU

Docker Volumes

בלי כתוביותעם כתוביות
PracticU › קורס Docker - עם Swarm Cluster › Docker Volumes
מילון מושגים:
Docker - פלטפורמה להרצת אפליקציות בתוך קונטיינרים מבודדים וקלים, כדי שירוצו באופן אחיד בכל סביבה.
מסד נתונים - אוסף מאורגן של נתונים המאוחסן כך שאפשר לשמור, לחפש, לעדכן ולשלוף אותו ביעילות, לרוב באמצעות שפת שאילתות.
קונטיינר - חבילה קלה ומבודדת שאורזת אפליקציה עם כל תלויותיה, ורצה באופן אחיד בכל סביבה, למשל ב-Docker.
נתיב - מחרוזת שמתארת את מיקומו של קובץ או תיקייה במערכת הקבצים, או כתובת של משאב בתוך אתר.
תהליך - מופע של תוכנה שרצה בזיכרון, עם הקוד, הנתונים והמשאבים שהוקצו לה על ידי מערכת ההפעלה.
ווליום - יחידת אחסון לוגית על דיסק או מספר דיסקים. ב-Docker, מנגנון לשמירת נתונים מחוץ לקונטיינר.
ענן - אספקת משאבי מחשוב כשירות דרך האינטרנט, כמו שרתים, אחסון ותוכנות, במקום להחזיק אותם מקומית.
RAM - זיכרון הגישה האקראית של המחשב, מהיר ונדיף, שבו נשמרים נתונים ותוכניות בזמן ריצתם.

Docker Volumes
קונטיינרים נועדו להתחלף ולהימחק בקלות, ולכן מידע שצריך להישמר, כמו נתוני מסד נתונים או קבצי אתר, לא יכול להישמר בתוך הקונטיינר. ווליומים ו-bind mounts מחברים תיקייה מהמחשב הפיזי לתוך הקונטיינר, כך שהמידע נשמר גם אחרי שהקונטיינר נמחק.
שלוש דרכים לחיבור תיקייה
1. Bind mount: מחברים תיקייה מסוימת במחשב הפיזי לנתיב בתוך הקונטיינר, למשל תיקיית האתר של Windows. כל שינוי בתיקייה נראה משני הצדדים. התהליכים מחוץ ל-Docker יכולים לשנות את התיקייה, ולכן ההרצאה מציינת שזה חיבור פשוט בלבד.
2. Volume: Docker מנהל את התיקייה בעצמו ומאחסן אותה במקום שמנוהל על ידו. ההרצאה מציינת שווליומים הם הדרך המומלצת לשמור מידע קבוע, ושאפשר לחבר להם פלאגינים, למשל לשמירה בענן.
3. tmpfs: מידע זמני שנשמר בזיכרון RAM, וההרצאה מציינת שזה נתמך רק בלינוקס.
פקודות ושימוש
1. הרצה עם חיבור: בפקודת ההרצה משתמשים באפשרות -v, וכשנותנים לה שם של ווליום, Docker מנהל אותו.
2. ניהול ווליומים: docker volume create, docker volume inspect, docker volume ls, docker volume rm ו-docker volume prune (מוחק את כל הווליומים שאינם בשימוש).
3. הפקודה mount: מאפשרת לציין במפורש את סוג החיבור. ההרצאה מציינת שלא ניתן לחבר ווליום לתיקייה, ולכן יש להתאים את סוג החיבור.
שימו לב
שני קונטיינרים שמחוברים לאותו ווליום רואים את אותם הקבצים, ושינוי שמבצע אחד נראה מיד בשני. הרשאות גישה לתיקייה במחשב הפיזי עלולות להיות בעיה, וההרצאה מציגה שהתיקייה נפתחה לגישה מלאה כדי לפתור תקלה. בדרך כלל כדאי להגביל הרשאות בצורה מסודרת במקום לתת גישה לכולם.
השיעור הבא בקורס: Docker & Visual Studio

פרקי ההרצאה: Docker Volumes

  1. 00:00

    מבוא: מה זה Volume ולמה שומרים מידע

  2. 00:42

    הכנת תיקיית נתונים ודף אינטרנט לדוגמה

  3. 01:46

    הרצת קונטיינר עם חיבור לתיקיית המחשב

  4. 04:44

    קונטיינר נוסף עם הרשאת קריאה בלבד

  5. 06:07

    העתקת Volumes מקונטיינר אחר

  6. 07:32

    בדיקת המאונטים עם docker inspect

  7. 09:33

    הרצת Apache בקונטיינר לינוקס עם מיפוי תיקייה

  8. 11:42

    Bind Mounts לעומת Volumes שמנוהלים על ידי Docker

תמלול ההרצאה: Docker Volumes

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

  1. 00:02

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

  2. 00:36

    הרי קונטיינרים נועדו להתחלף מהר, להימחק, להיווצר מחדש, ואם אנחנו רוצים לשמור מידע קבוע, כמו דאטאבייס, כמו דפי אינטרנט שלנו, אז אנחנו יכולים לעשות תיקייה, נניח נעשה בקונן C שלנו איזושהי תיקייה, נקרא לה דאטה, מידע כלשהו, ובואו נעשה פה קובץ, נניח index.html.

  3. 01:15

    כאילו מתכנתים שמו לי פה את אתר האינטרנט שלנו נפתח את זה עם notepad ונעשה כאילו שזה הקוד Hello from host וזה למעשה כאילו אתר אינטרנט כי אנחנו לא בקורס תכנות פה בואו נראה שזה עובד וזה עובד אתם רואים Hello from host עובד יפה מאוד עכשיו אנחנו רוצים את

  4. 01:49

    התיקייה הזאת לחבר לתוך הקונטיינר פנימה כאילו זו תיקייה לוקאלית שלו אז איך אנחנו נעשה את זה? יש לנו ככה, docker run disconnected שירוץ במצב מנותק, אני לא צריך את ה-CMD תקוע שמה, מינוס rm, זה אומר איך שאני עושה סטופ תשמיד את הקונטיינר, תמחק אותו, לא צריך שיישאר במצב סטופ, אני לא אעשה לו בעתיד סטארט, זה לא סטופ סטארט סטופ סטארט,

  5. 02:22

    איך שעשיתי סטופ תשמיד אותו, מינוס p, תפתח לו פורטים ב-80 81 בפנים 80, זה אומר לפורט 80 שלו, אני הראוטר, המחשב שלי זה כאילו הראוטר, תן לו איזה שם web1 וזה הדבר המעניין מינוס v אני אומר cdata אצלי אצלי cdata יהיה inetpub wwroot אצלו יפה מאוד אז פה אנחנו יכולים לעשות docker ps ולראות את השם אתם רואים web1 שזה העמודה

  6. 02:58

    האחרונה names זה כאילו שורה אחת שלא נכנסה וירד שורה אנחנו רואים פה port פתוח 8081 בואו נראה localhost.2081 וזה עובד. שמתם לב, הפעלנו קונטיינר חדש לגמרי ומה ששם קורה בפנים מחובר אלינו.

  7. 03:34

    ניכנס פנימה לתוכו, נעשה docker exec, ניכנס לתוכו, נרשום שם של קונטיינר ובחד או ID של קונטיינר ופקודת CMD. אנחנו בתוך הקונטיינר, אוי, שכחתי לעשות מינוס IT. IT זה אומר שיהיה, אינטראקטיבי מה שנקרא, אנחנו עושים דיר cd-inet-pub cd-www-root דיר ושימו לב אנחנו רואים את

  8. 04:10

    הקובץ שהיה שמה אם אנחנו נעשה לדוגמה echo 111 לתוך הסוף של הקובץ הזה אנחנו בתוך קונטיינר כן אתם מבינים שאנחנו בתוך קונטיינר ושימו לב במחשב הפיזי שלי התווסף פה 111 אתם רואים ואם אני אגלוש עכשיו לאתר האינטרנט לוקל אוסט או 127, 180, 81, אני רואה פה 111.

  9. 04:44

    יפה מאוד, אז הבנו מה זה ווליום, קונטרול PQ. עכשיו נניח אני רוצה לעשות עוד אחד, אני עושה בדיוק אותו דבר, רק בואו נעשה בדיוק אותו אחד, רק אני רוצה לעשות שני דברים, קודם כל זה יהיה בפורט השני כי אי אפשר באותו פורט, ופה אני רוצה להראות לכם שאפשר לשים בסוף פסיק ולכתוב read only.

  10. 05:13

    אם אני שם פסיק read only, סליחה, נקודתיים read only, נקודתיים read only אנחנו יכולים עכשיו לעשות עוד פעם docker exec לשרת web2.cmd ולא לשכוח לעשות מינוס אינטראקטיבי אנחנו נכנסים בקונטיינר חדש שכרגע יצרנו init pub cd www root dir type type זה לראות

  11. 05:44

    מה יש בפנים אנחנו רואים שיש 111 בפנים ואנחנו עכשיו עושים 222 שיוסיף בסוף של הקובץ אינדקס ואנחנו נקבל access denied כי הוא ב-read only.

  12. 05:58

    ctrl pq escape read escape sequence יצאתי החוצה אבל הקונטיינר רץ מאחורי הקלעים. עכשיו אם אני רוצה לעשות עוד קונטיינר והפעם נעשה קונטיינר 3 אני מראה לכם כל מיני אופציות שיש עם מינוס v אני יכול לעשות פה במקום לפרט את כל זה במקום לפרט את כל זה אני יכול לכתוב דבר כזה מינוס ווליום from

  13. 06:28

    ווב שתיים תעתיק את כל הווליומים שיש בווב שתיים וברגע שאני עושה את זה 80 83 שכרגע יצרנו אותו הנה 80 83 עכשיו מה יקרה אם אני אשנה פה את הקובץ ואני אעשה לו פה 222 בכל זאת בוא נעשה 999 תראו מה יקרה אנחנו ב-80 83 התווסף 999 ואיפה עוד התווסף ב-222 וב-11 אתם רואים זה בכולם מתווסף כי כולם מסתכלים על אותה

  14. 07:15

    וגם אם אחד כותב כולם רואים את זה אז ראינו גם שיש ווליום פרום וב 2 והוא מעתיק את הכל דרך אגב אם נעשה דוקר אינספקט ונניח נעשה וב 3 אנחנו ממש נוכל לראות פה את הנת רשתות זה איזה פורטים פתוחים זה אנטרי פוינט זה התוכנה שרצה ברקע שלא ייסגר הקונטיינר מאונטס זה מה שרציתי להראות לכם מאונטס שימו לב מאונטס זה התיקיות המחוברות אני רואה ש-C-Data ב-Source, במחשב הפיזי

  15. 08:00

    שלי, מחוברת ל-INETPUB-WWROOT. אתם רואים read-write-false, למה? כי אמרנו לו שהוא יהיה read-only, נכון?

  16. 08:09

    העתקנו משניים והשני היה read-only, נכון? שימו לב, type-bind, בינד זה הטייפ הפשוט, עוד מעט נדבר מה זה הטייפ ווליום שהוא יותר מתקדם.

  17. 08:21

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

  18. 08:35

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

  19. 08:58

    בגלל שני הדברים האלו הוא יודע להפעיל לינוקס. וכמובן שיש לי היפר-וי, כן? יש לי את הפיצ'ר של היפר-וי מותקן. אז הוא יודע לעשות, אני לוחץ Center מי שלא רואה, אתם רואים Hyper-V Installed.

  20. 09:14

    אז שלושת הדברים האלו, Hyper-V, Experimental Feature והתיקייה הזאת שראינו לפני כן, מאפשר להפעיל לי את הקונטיינרים של לינוקס. ואני רוצה להראות לכם דבר מדהים, שזה לא משנה שזה לינוקס, אתם רואים Web4 שיש שיא דאטה, וזה הנתיב באפאצ'י, HTTPD זה אפאצ'י.

  21. 09:37

    אנחנו עכשיו מריצים באפאצ'י, אפאצ'י זה Web Server בלינוקס. ואתם תראו, הנה הוא מוריד את זה, כי אנחנו פעם ראשונה מריצים אפאצ'י. אפאצ'י זה וב-סרבר, אחד מהכי מפורסמים שיש בלינוקס.

  22. 09:54

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

  23. 10:11

    הוא הריץ אותו, שימו לב, הנה פה. אתם רואים? חמש לא עובד, שלא תגידו שאני סתם. אתם רואים? חמש לא עובד, וארבע עובד. שימו לב, גם לינוקס עובד לנו בצורה חלקה.

  24. 10:27

    מה יותר מפורסם מ-HTTPD של אפאצ'י? שרת שנקרא NGINX, כן? זה שרת ווב הכי מפורסם בווב, ואז אני אומר דבר כזה, תריץ, זה הכל אותו דבר, סידאטה תחבר לתיקיית HTML שלו, ותריץ כובד של HTTPD, זה הסרוויץ שלו.

  25. 10:52

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

  26. 11:07

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

  27. 11:25

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

  28. 11:42

    נכון, זה סתם לחבר תיקייה. אם אנחנו ניכנס לאתר של דוקר, בואו ניכנס לאתר של דוקר, ובאתר של דוקר יש פה Manage Data in Docker, שיש מידע קבוע ומידע לא קבוע, אז יש Bind, פשוט Bind Mounts, וזה יכול להיות בכל מקום על האוסט הפיזי, אבל מה?

  29. 12:24

    כל מי שלא דוקר יכול לשנות אותם. אתם רואים? כל מי שלא דוקר, Non-Docker Process, יכול לשנות אותם. בקיצור, זה מונט פשוט. לעומת זאת, יש ווליומס שהם יותר מתקדמים.

  30. 12:40

    למה? כי הם Manage by Docker, דוקר מנהל אותם. עכשיו תגידו, מה זה משנה לי שדוקר מנהל אותם או לא? דוקר יודע לעשות דברים מאוד מאוד חכמים, לדוגמה, איך שכותבים משהו לתיקייה, יש לו פלאגין שרושם את זה לענן, ואני יכול לעשות בענן תיקייה משותפת, או באיזשהו שרת תיקייה משותפת,

  31. 13:02

    ולרשום לשמה את כל המידע. במקום שהמידע יהיה לוקאלי בקונן C שלי, זה יירשם לענן, והמון המון המון שרתים ייקחו מידע מהענן הזה.

  32. 13:15

    יש לו כל מיני פלאגינים, כל מיני תוספות שאפשר להכניס לווליום. אז ווליום זה אותו רעיון של תיקייה כמו ביינד, שניהם מחברים תיקייה לוקאלית לשמה, רק בווליום מנוהל על ידי Manage by Docker, דוקר מנהל אותם, ומי ש-non-Docker process, מי שלא דוקר, אסור לא modify this part of the file

  33. 13:41

    system, אסור להם לגעת. דוקר אומרים, תן לנו לנהל את החלק הזה, את התיקייה הזאת. Volumes are the best way to persist מידע קבוע בדוקר.

  34. 13:52

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

  35. 14:05

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

  36. 14:26

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

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

ההרצאה הקודמת: Linux Container on Windows 10

ההרצאה הבאה: Docker & Visual Studio

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

  • docker
  • קונטיינר בענן - Cloud Run - התקנת Docker על וונדוס 11

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

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