
-v, וכשנותנים לה שם של ווליום, Docker מנהל אותו.docker volume create, docker volume inspect, docker volume ls, docker volume rm ו-docker volume prune (מוחק את כל הווליומים שאינם בשימוש).הטקסט המלא של הדקות הראשונות בהרצאה «Docker Volumes» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם בהרצאה הזאת אנחנו נדבר על מה זה ווליומים ומה הרעיון שלהם והרעיון שלהם מאוד פשוט לקחת תיקייה במחשב הפיזי באוסט הפיזי ולחבר אותה לתוך קונטיינר כאילו זה תיקייה בפנוכו כל מה שקונטיינר ירשום שמה יירשם במחשב הפיזי כל מה שמחשב הפיזי ירשום בתיקייה הזאת יירשם שמה וככה נוכל לשמור על המידע גם אחרי ההשמדה של הקונטיינר
הרי קונטיינרים נועדו להתחלף מהר, להימחק, להיווצר מחדש, ואם אנחנו רוצים לשמור מידע קבוע, כמו דאטאבייס, כמו דפי אינטרנט שלנו, אז אנחנו יכולים לעשות תיקייה, נניח נעשה בקונן C שלנו איזושהי תיקייה, נקרא לה דאטה, מידע כלשהו, ובואו נעשה פה קובץ, נניח index.html.
כאילו מתכנתים שמו לי פה את אתר האינטרנט שלנו נפתח את זה עם notepad ונעשה כאילו שזה הקוד Hello from host וזה למעשה כאילו אתר אינטרנט כי אנחנו לא בקורס תכנות פה בואו נראה שזה עובד וזה עובד אתם רואים Hello from host עובד יפה מאוד עכשיו אנחנו רוצים את
התיקייה הזאת לחבר לתוך הקונטיינר פנימה כאילו זו תיקייה לוקאלית שלו אז איך אנחנו נעשה את זה? יש לנו ככה, docker run disconnected שירוץ במצב מנותק, אני לא צריך את ה-CMD תקוע שמה, מינוס rm, זה אומר איך שאני עושה סטופ תשמיד את הקונטיינר, תמחק אותו, לא צריך שיישאר במצב סטופ, אני לא אעשה לו בעתיד סטארט, זה לא סטופ סטארט סטופ סטארט,
איך שעשיתי סטופ תשמיד אותו, מינוס p, תפתח לו פורטים ב-80 81 בפנים 80, זה אומר לפורט 80 שלו, אני הראוטר, המחשב שלי זה כאילו הראוטר, תן לו איזה שם web1 וזה הדבר המעניין מינוס v אני אומר cdata אצלי אצלי cdata יהיה inetpub wwroot אצלו יפה מאוד אז פה אנחנו יכולים לעשות docker ps ולראות את השם אתם רואים web1 שזה העמודה
האחרונה names זה כאילו שורה אחת שלא נכנסה וירד שורה אנחנו רואים פה port פתוח 8081 בואו נראה localhost.2081 וזה עובד. שמתם לב, הפעלנו קונטיינר חדש לגמרי ומה ששם קורה בפנים מחובר אלינו.
ניכנס פנימה לתוכו, נעשה docker exec, ניכנס לתוכו, נרשום שם של קונטיינר ובחד או ID של קונטיינר ופקודת CMD. אנחנו בתוך הקונטיינר, אוי, שכחתי לעשות מינוס IT. IT זה אומר שיהיה, אינטראקטיבי מה שנקרא, אנחנו עושים דיר cd-inet-pub cd-www-root דיר ושימו לב אנחנו רואים את
הקובץ שהיה שמה אם אנחנו נעשה לדוגמה echo 111 לתוך הסוף של הקובץ הזה אנחנו בתוך קונטיינר כן אתם מבינים שאנחנו בתוך קונטיינר ושימו לב במחשב הפיזי שלי התווסף פה 111 אתם רואים ואם אני אגלוש עכשיו לאתר האינטרנט לוקל אוסט או 127, 180, 81, אני רואה פה 111.
יפה מאוד, אז הבנו מה זה ווליום, קונטרול PQ. עכשיו נניח אני רוצה לעשות עוד אחד, אני עושה בדיוק אותו דבר, רק בואו נעשה בדיוק אותו אחד, רק אני רוצה לעשות שני דברים, קודם כל זה יהיה בפורט השני כי אי אפשר באותו פורט, ופה אני רוצה להראות לכם שאפשר לשים בסוף פסיק ולכתוב read only.
אם אני שם פסיק read only, סליחה, נקודתיים read only, נקודתיים read only אנחנו יכולים עכשיו לעשות עוד פעם docker exec לשרת web2.cmd ולא לשכוח לעשות מינוס אינטראקטיבי אנחנו נכנסים בקונטיינר חדש שכרגע יצרנו init pub cd www root dir type type זה לראות
מה יש בפנים אנחנו רואים שיש 111 בפנים ואנחנו עכשיו עושים 222 שיוסיף בסוף של הקובץ אינדקס ואנחנו נקבל access denied כי הוא ב-read only.
ctrl pq escape read escape sequence יצאתי החוצה אבל הקונטיינר רץ מאחורי הקלעים. עכשיו אם אני רוצה לעשות עוד קונטיינר והפעם נעשה קונטיינר 3 אני מראה לכם כל מיני אופציות שיש עם מינוס v אני יכול לעשות פה במקום לפרט את כל זה במקום לפרט את כל זה אני יכול לכתוב דבר כזה מינוס ווליום from
ווב שתיים תעתיק את כל הווליומים שיש בווב שתיים וברגע שאני עושה את זה 80 83 שכרגע יצרנו אותו הנה 80 83 עכשיו מה יקרה אם אני אשנה פה את הקובץ ואני אעשה לו פה 222 בכל זאת בוא נעשה 999 תראו מה יקרה אנחנו ב-80 83 התווסף 999 ואיפה עוד התווסף ב-222 וב-11 אתם רואים זה בכולם מתווסף כי כולם מסתכלים על אותה
וגם אם אחד כותב כולם רואים את זה אז ראינו גם שיש ווליום פרום וב 2 והוא מעתיק את הכל דרך אגב אם נעשה דוקר אינספקט ונניח נעשה וב 3 אנחנו ממש נוכל לראות פה את הנת רשתות זה איזה פורטים פתוחים זה אנטרי פוינט זה התוכנה שרצה ברקע שלא ייסגר הקונטיינר מאונטס זה מה שרציתי להראות לכם מאונטס שימו לב מאונטס זה התיקיות המחוברות אני רואה ש-C-Data ב-Source, במחשב הפיזי
שלי, מחוברת ל-INETPUB-WWROOT. אתם רואים read-write-false, למה? כי אמרנו לו שהוא יהיה read-only, נכון?
העתקנו משניים והשני היה read-only, נכון? שימו לב, type-bind, בינד זה הטייפ הפשוט, עוד מעט נדבר מה זה הטייפ ווליום שהוא יותר מתקדם.
בגדול יש שלושה טייפים. יופי, אז הבנו שב-container-inspect אנחנו יכולים לראות את כל המאונטים שלו. יפה מאוד, מה עוד רציתי להראות לכם?
אה, דרך אגב, כל זה גם עובד על לינוקס. שימו לב, זה מדהים. אתם זוכרים, כן, שאנחנו בדוקר וורז'ן נמצאים באקספרימנטל true, כי במקרה שלי זה עוד לא בגרסה סופית, ובתיקי ה-C, פרוגרם פיילס, לינוקס קונטיינרס, יש לנו קרנל.
בגלל שני הדברים האלו הוא יודע להפעיל לינוקס. וכמובן שיש לי היפר-וי, כן? יש לי את הפיצ'ר של היפר-וי מותקן. אז הוא יודע לעשות, אני לוחץ Center מי שלא רואה, אתם רואים Hyper-V Installed.
אז שלושת הדברים האלו, Hyper-V, Experimental Feature והתיקייה הזאת שראינו לפני כן, מאפשר להפעיל לי את הקונטיינרים של לינוקס. ואני רוצה להראות לכם דבר מדהים, שזה לא משנה שזה לינוקס, אתם רואים Web4 שיש שיא דאטה, וזה הנתיב באפאצ'י, HTTPD זה אפאצ'י.
אנחנו עכשיו מריצים באפאצ'י, אפאצ'י זה Web Server בלינוקס. ואתם תראו, הנה הוא מוריד את זה, כי אנחנו פעם ראשונה מריצים אפאצ'י. אפאצ'י זה וב-סרבר, אחד מהכי מפורסמים שיש בלינוקס.
השני, למען האמת, יותר מפורסם ממנו אינג'ייניקס. תכף גם נראה אותו. ואני רוצה להראות לכם שאני מחבר את הסידאטה שלי לזה שלו, ואתם תכף תראו, ארבע.
הוא הריץ אותו, שימו לב, הנה פה. אתם רואים? חמש לא עובד, שלא תגידו שאני סתם. אתם רואים? חמש לא עובד, וארבע עובד. שימו לב, גם לינוקס עובד לנו בצורה חלקה.
מה יותר מפורסם מ-HTTPD של אפאצ'י? שרת שנקרא NGINX, כן? זה שרת ווב הכי מפורסם בווב, ואז אני אומר דבר כזה, תריץ, זה הכל אותו דבר, סידאטה תחבר לתיקיית HTML שלו, ותריץ כובד של HTTPD, זה הסרוויץ שלו.
יפה, בגלל שזה דיסקונקטד, אנחנו לא רואים הודעות שהוא רושם לנו על המסך, הוא גם מוציא כל מיני הוראות, בואו נראה, 8085, אני מראה לכם שגם הלינוקס זה עובד, it works.
אופס, התיקייה לא נראה לי שחוברה כמו שצריך. צריך לבדוק למה, אבל זה עיקרון, כן? אתם רוצים לחקור את זה, אפשר להיכנס לדורקר אקזק ולחקור את זה. האמת שלא בא לי לחקור את זה.
הבנתם את הרעיון, וזה מספיק טוב לי. למה התיקייה לא התחברה, אני לא יודע. טוב, מה רציתי לדבר איתכם? אם אני אכנס לזה, זה פשוט ייקח מלא זמן. רציתי להראות לכם שיש משהו יותר מתקדם מזה.
נכון, זה סתם לחבר תיקייה. אם אנחנו ניכנס לאתר של דוקר, בואו ניכנס לאתר של דוקר, ובאתר של דוקר יש פה Manage Data in Docker, שיש מידע קבוע ומידע לא קבוע, אז יש Bind, פשוט Bind Mounts, וזה יכול להיות בכל מקום על האוסט הפיזי, אבל מה?
כל מי שלא דוקר יכול לשנות אותם. אתם רואים? כל מי שלא דוקר, Non-Docker Process, יכול לשנות אותם. בקיצור, זה מונט פשוט. לעומת זאת, יש ווליומס שהם יותר מתקדמים.
למה? כי הם Manage by Docker, דוקר מנהל אותם. עכשיו תגידו, מה זה משנה לי שדוקר מנהל אותם או לא? דוקר יודע לעשות דברים מאוד מאוד חכמים, לדוגמה, איך שכותבים משהו לתיקייה, יש לו פלאגין שרושם את זה לענן, ואני יכול לעשות בענן תיקייה משותפת, או באיזשהו שרת תיקייה משותפת,
ולרשום לשמה את כל המידע. במקום שהמידע יהיה לוקאלי בקונן C שלי, זה יירשם לענן, והמון המון המון שרתים ייקחו מידע מהענן הזה.
יש לו כל מיני פלאגינים, כל מיני תוספות שאפשר להכניס לווליום. אז ווליום זה אותו רעיון של תיקייה כמו ביינד, שניהם מחברים תיקייה לוקאלית לשמה, רק בווליום מנוהל על ידי Manage by Docker, דוקר מנהל אותם, ומי ש-non-Docker process, מי שלא דוקר, אסור לא modify this part of the file
system, אסור להם לגעת. דוקר אומרים, תן לנו לנהל את החלק הזה, את התיקייה הזאת. Volumes are the best way to persist מידע קבוע בדוקר.
הם ממליצים להשתמש בווליום כי יש לו יכולת לרשום מידע קבוע בדיוק כמו ביינד, רק ביינד הוא לא שולט, הוא רק מחבר לך תיקייה ולהתראות. ווליום הוא יודע לנהל, יש לו פלאגינים.
לדוגמה, אם אתם תראו בדוקר, אתם תראו שיש לו את כל החלק של נכון למעלה, יש לנו פה אזורים גדולים ויש פה ווליומס, תכף נראה את זה, בדיוק איך הוא מנהל אותם, ויש פלאגינים מיוחדים, איפה פלאגינס?
צריך להיות פה פלאגינס, כל מיני פלאגינים כמו לרשום את המידע לענן. אז דוקר ווליום, אנחנו יכולים ליצור ווליום חדש, לבדוק ווליום מידע טכני עליו, לראות איזה ווליומים יש לנו, למחוק את כל הווליומים שלא נמצאים בשימוש