מהו מיכל דוקר? - מיכל את היישום שלך באמצעות Docker



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

ובכן, אני מקווה שקראת את הבלוגים הקודמים שלי ב- דוקר שם כיסיתי את היסודות של דוקר. הנה, בבלוג זה של Docker Container אדון במה הם Containers Docker וכיצד זה עובד. לרוב, אנו נתמקד במקרים מעשיים ושימוש של Docker.

פירטתי את הנושאים לבלוג זה של Docker Container:





  • מדוע אנו זקוקים למכולות דוקר?
  • כיצד פועלים מיכלים של דוקר?
  • שימוש במקרים של מיכל דוקר

מדוע אנו זקוקים למכולות דוקר?

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

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



שקול את הדוגמה הבאה:

אפליקציית קניות מקוונת - מיכל דוקר - אדוריקה

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



ובכן, לאדריכלות זו יתרונות רבים:

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

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

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

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

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

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

למד כיצד מכולות דוקר טובות יותר ממכונות וירטואליות

אז תאר לעצמך אם אני נותן 8 GB של זיכרון RAM לכל מחשבי ה- VM שלי ויש לי 5 מיקרו-שירותים הפועלים במכונות וירטואליות שונות. במקרה זה, מחשבים וירטואליים אלה ידרשו 40 GB של זיכרון RAM. ובכן, עכשיו אני דורש שהתצורות של המחשב המארח שלי יהיו גבוהות מאוד, כמעט 44 ג'יגה-בייט של זיכרון RAM אמור להיות שם במחשב המארח שלי. ברור שזה לא פיתרון בר-קיימא לאדריכלות כזו מכיוון שאני מבזבז כאן הרבה משאבים.

בסדר, יש לי הרבה משאבים לבזבז, אבל עדיין יש לי בעיה של חוסר עקביות במחזור החיים שלי של אספקת תוכנה (SDLC). עלי להגדיר את מחשבי ה- VM הללו במבחן כמו גם בסביבת מוצרים. אי שם בתהליך זה, תוכנות מסוימות לא עודכנו בשרת הבדיקה, וצוות ה- Dev משתמש בגירסה המעודכנת של התוכנה. זה מוביל לסכסוכים.

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

עכשיו, בואו להבין מה זה Docker Container ואיך זה עובד, ואיך זה פתר את הבעיה שלי.

הוא מערכת יחסים בג'אווה

מהו מיכל דוקר?

Docker הוא כלי שנועד להקל על יצירה, פריסה והפעלה של יישומים באמצעות מכולות.

אתה יכול ליצור מיכלים של Docker, מיכלים אלה יכילו את כל הבינאריות והספריות הנדרשות ליישום שלך או למיקרו-שירות במקרה שלי. אז היישום שלך קיים במכולה, או שאתה מיכל את היישום שלך. כעת, ניתן להשתמש באותו מיכל בסביבת Test and Prod.

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

בואו נבין עכשיו, איך עובד מיכל דוקר.

איך עובד מיכל דוקר?

התרשים שלהלן הוא בעצם דרך להשתמש ב- Docker. ואני מניח שיש לך רעיון לגבי Image Docker ו- Dockerfile.

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

  • מפתח קודם יכתוב את קוד הפרויקט בקובץ Docker ואז יבנה תמונה מאותו קובץ.
  • תמונה זו תכיל את כל קוד הפרויקט.
  • כעת תוכל להפעיל את תמונת ה- Docker הזו כדי ליצור מיכלים רבים ככל שתרצה.
  • ניתן להעלות את תמונת ה- Docker הזו לרכזת Docker (זה בעצם מאגר ענן לתמונות ה- Docker שלך, אתה יכול לשמור אותה ציבורית או פרטית).
  • את תמונת ה- Docker הזו במרכז הרכזת ניתן לצרף על ידי צוותים אחרים כגון QA או Prod.

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

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

להלן הסבר התרשים:

  • ראשית, כתבנו את הדרישות המורכבות בתוך Dockerfile.
  • ואז דחפנו את זה על GitHub.
  • לאחר מכן השתמשנו בשרת CI (Jenkins).
  • שרת ג'נקינס זה יביא אותו מטה מגיט, ויבנה את הסביבה המדויקת. זה ישמש בשרתי ייצור כמו גם בשרתי בדיקה.
  • פרסנו אותה לבימוי (הכוונה היא לפריסת התוכנה שלך לשרתים למטרות בדיקה, לפני פריסתן באופן מלא לייצור.) סביבות למבחנים.
  • בעיקרון, גילגלנו בדיוק את מה שהיה לנו בפיתוח, בדיקה והיערכות לייצור.

זה יהיה הוגן לומר זאת, דוקר עשה לי את החיים קלים.

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

מחקר מקרה של אוניברסיטת אינדיאנה:

אוניברסיטת אינדיאנה היא מערכת אוניברסיטאית ציבורית מרובת קמפוסים במדינת אינדיאנה, ארצות הברית.

הצהרת בעיה

הם השתמשו בסקריפטים מותאמים אישית כדי לפרוס את היישומים ב- VM.

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

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

היה צורך באבטחה לנתוני הסטודנטים כגון SSN ונתוני בריאות התלמידים.

פִּתָרוֹן:

כל הבעיות טופלו על ידי מרכז הנתונים של Docker (DDC), עיין בתרשים להלן:

רישום מהימן של דוקר - היא מאחסנת את תמונות ה- Docker.

ממשק משתמש אינטרנטי UCP (Plane Control Plane) - עוזר בניהול אשכול שלם ממקום אחד. השירותים נפרסים באמצעות ממשק המשתמש של UCP באינטרנט, באמצעות תמונות Docker המאוחסנות ב- DTR (Docker Trusted Registry).

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

UCP ו- DTR משתלבים עם שרת ה- LDAP שלהם כדי לספק גישה מהירה ליישומים שלהם.

מדריכי ה- SQL שלי למתחילים

אני מקווה שאתם קראתם את הבלוגים הקודמים כדי ללמוד את היסודות של Docker.

כעת אסביר לך כיצד נוכל להשתמש ב- Docker Compose ליישום רב מיכל.

Docker Hands-On:

אני מניח שהתקנת את דוקר.אני אשתמש ב- Docker Compose בפוסט זה, להלן נתתי הקדמה קטנה ל- Docker Compose.

Docker Compose: זהו כלי להגדרה והפעלה של יישומי Docker מרובי-מכולות. באמצעות Docker Compose, אתה יכול להשתמש בקובץ Compose כדי להגדיר את שירותי היישום שלך. ואז, באמצעות פקודה אחת, אתה יכול ליצור ולהתחיל את כל השירותים מהתצורה שלך.

נניח שיש לך מספר יישומים במכולות שונות וכל המכולות האלה מקושרות זו לזו. לכן, אינך רוצה לבצע כל אחד מאותם מכולות בזה אחר זה. אבל, אתה רוצה להפעיל את המכולות האלה בפקודה אחת. שם נכנס לתמונה Docker Compose. באמצעותו תוכלו להריץ מספר יישומים במיכלים שונים עם פקודה אחת. כלומר docker-compose up.

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

הבה ניקח דוגמה נוספת:

נניח שתרצו לפרסם בלוג, לשם כך תשתמשו ב- CMS (מערכת ניהול תוכן), ו- wordpress הוא ה- CMS הנפוץ ביותר. ביסודו של דבר, אתה זקוק למכולה אחת עבור וורדפרס ואתה זקוק למכולה אחת נוספת בתור MySQL עבור הקצה האחורי, כי מיכל MySQL צריך להיות מקושר למיכל wordpress. אנו זקוקים גם למיכל אחד נוסף עבור Php Myadmin שיקושר למסד הנתונים MySQL, בעיקרון הוא משמש לגישה למסד הנתונים MySQL.

מה דעתך שאבצע את הדוגמה שצוינה לעיל באופן מעשי.

השלבים המעורבים:

  1. התקן את Docker Compose :
  2. התקן את WordPress: נשתמש בפקיד וורדפרס ו MariaDB תמונות דוקר.
  3. התקן את MariaDB: זהו אחד משרתי מסדי הנתונים הפופולריים ביותר בעולם. זה נעשה על ידי המפתחים המקוריים של MySQL. MariaDB פותחה כתוכנת קוד פתוח וכמסד נתונים יחסי היא מספקת ממשק SQL לגישה לנתונים.
  4. התקן את PhpMyAdmin: זהו כלי תוכנה חינמי שנכתב ב- PHP, שנועד לטפל בניהול MySQL דרך האינטרנט.
  5. צור את אתר WordPress:

בואו נתחיל!

התקן את Docker Compose:

התקן את Python Pip תחילה:

sudo apt-get install פייתון-פיפ

כעת תוכל להתקין את Docker Compose:

sudo pip להתקין docker-compose

התקן את WordPress:

צור ספריית wordpress:

mkdir wordpress

היכנס לספריית wordpress הזו:

cd wordpress /

בספריה זו צור קובץ YAML של Docker Compose ולאחר מכן ערוך אותו באמצעות gedit:

sudo gedit docker-compose.yml

הדבק את שורות הקוד שלהלן בקובץ yaml זה:

wordpress: תמונה: wordpress קישורים: - wordpress_db: יציאות mysql: - 8080: 80 wordpress_db: image: mariadb סביבה: MYSQL_ROOT_PASSWORD: edureka phpmyadmin: תמונה: corbinu / docker-phpmyadmin קישורים: - wordpress_db: mysql יציאות: - 8181: 80 MYSQL_USERNAME: שורש MYSQL_ROOT_PASSWORD: edureka

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

wordpress_db: ... סביבה: MYSQL_ROOT_PASSWORD: edureka ...

זה יקבע משתנה סביבה בתוך מיכל wordpress_db שנקרא MYSQL_ROOT_PASSWORD עם הסיסמה הרצויה. תמונת ה- Docker של MariaDB מוגדרת לבדוק אם יש משתנה סביבה זה כאשר היא מופעלת ותדאג להגדיר את ה- DB עם חשבון שורש עם הסיסמה המוגדרת כ- MYSQL_ROOT_PASSWORD.

wordpress: ... יציאות: - 8080: 80 ...

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

קישורים phpmyadmin: תמונה: corbinu / docker-phpmyadmin: - wordpress_db: יציאות mysql: - 8181: 80 סביבה: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

זה תופס את ה- docker-phpmyadmin על ידי חבר הקהילה corbinu, מקשר אותו למיכל wordpress_db שלנו עם השם mysql (כלומר מתוך מיכל phpmyadmin הפניות לשם המארח mysql יועבר למיכל wordpress_db שלנו), חושף את יציאתו 80 ביציאה 8181 של מערכת מארחת, ולבסוף מגדיר כמה משתני סביבה עם שם המשתמש והסיסמה שלנו MariaDB. תמונה זו אינה תופסת באופן אוטומטי את משתנה הסביבה MYSQL_ROOT_PASSWORD מסביבתו של wordpress_dbcontainer, כפי שעושה תמונת wordpress. עלינו למעשה להעתיק את שורת MYSQL_ROOT_PASSWORD: edureka ממיכל wordpress_db ולהגדיר את שם המשתמש לשורש.

עכשיו התחל את קבוצת היישומים:

docker-compose up -d

זה כל מה שאתה צריך לעשות. אתה יכול להוסיף כמה מכולות שאתה אוהב בדרך זו ולקשר את כולם בכל דרך שתרצה.

כעת, בדפדפן עבור לנמל 8080, תוך שימוש ב- IP הציבורי שלך או שם המארח, כפי שמוצג להלן:

מקום אירוח: 8080

מלא טופס זה ולחץ על התקן את WordPress.

לאחר שתסיים, בקר שוב בכתובת ה- IP של השרת שלך (הפעם באמצעות יציאה 8181, למשל localhost: 8181). מסך הכניסה phpMyAdmin יקבל את פניכם:

המשך והיכנס באמצעות שם המשתמש והסיסמה של שם המשתמש שהגדרת בקובץ YAML ותוכל לגלוש במסד הנתונים שלך. תוכלו לשים לב שהשרת כולל מסד נתונים של wordpress, המכיל את כל הנתונים מהתקנת הוורדפרס שלכם.

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

אם גילית שבלוג Docker Container רלוונטי, עיין ב מאת אדוריקה, חברת למידה מקוונת מהימנה עם רשת של יותר מ -250,000 לומדים מרוצים הפרוסים ברחבי העולם. קורס הדרכת ההסמכה של Edureka DevOps עוזר ללומדים לרכוש מומחיות בתהליכים וכלים שונים של DevOps כגון Puppet, Jenkins, Docker, Nagios, Ansible, Chef, Saltstack ו- GIT לאוטומציה של מספר שלבים ב- SDLC.

יש לך שאלה בשבילי? אנא הזכיר זאת בסעיף ההערות ואחזור אליך.