איך להפעיל ולנהל תקן Docker של MongoDB

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

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

דרישות קדם

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

  • מחשב Ubuntu – מדריך זה משתמש ב Ubuntu 20.04 LTS
  • A user with sudo permission
  • Docker – מדריך זה משתמש ב-Docker 20.10.9

הורדת תמונת Docker MongoDB

לפני שתוכל להפעיל ולנהל מכלי Docker MongoDB, עליך תחילה להוריד תמונת MongoDB מ-Docker Hub כך שתוכל להריץ את מכלי MongoDB באופן מקומי.

הרץ את הפקודה docker למטה כדי להוריד את תמונת ה- MongoDB Community Edition (CE) (pull mongo), שהיא מתארחת על ידי Docker Hub. הגרסה האחרונה של תמונה זו בזמן כתיבת הטקסט היא 4.2.

sudo docker pull mongo

כפי שאתה רואה למטה, הפקודה מושכת אוטומטית את הגרסה האחרונה של התמונה ומסמנת אותה כ-latest.

Pulling mongo image

עכשיו הרץ את הפקודה docker images למטה כדי לרשום את כל התמונות הזמינות בשרת שלך.

sudo docker images

מתחת לכך, תראה את תמונת ה- MongoDB עם התיוג latest.

Listing all Docker images

הרצת קונטיינר MongoDB באמצעות Docker

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

1. הרץ את הפקודה mkdir למטה כדי ליצור ספריית נתונים בשם mongodata לאחסון מסד הנתונים והלוגים של MongoDB.

sudo mkdir -p /mongodata

2. לאחר מכן, בצע את הפקודה docker run למטה כדי ליצור קונטיינר בשם mymongo. בנוסף, הקונטיינר מופעל עם TTY פיקטיבי אינטראקטיבי (-it), במקרה שהפלט ייראה בעת התחלת הקונטיינר.

לבסוף, הספרייה שנוצרה לאחרונה mongodata מחוברת (-v) לספרייה הפנימית, /data/db. אפשרות ה-d מפעילה את הקונטיינר במצב נפרד, כך שהוא רץ כתהליך רקע ומחזיר את פלט הקונסולה לאחר היצירה.

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

sudo docker run -it -v mongodata:/data/db --name mymongo -d mongo

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

Deploying MongoDB Container

3. לבסוף, הפעל את הפקודה docker ps שלמטה כדי לזהות את מזהה הקונטיינר ולבדוק את מצבו. פקודת הdocker ps מציגה את כל המידע על הקונטיינר הפועל כרגע.

פקודת הdocker ps דומה לפקודת הps הרגילה בלינוקס.

sudo docker ps

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

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

Checking Docker MongoDB Container Status

אולי תרצה לראות את קובץ הלוג של הקונטיינר mymongo כדי לקבוע מה קרה במסד הנתונים/המופע של מונגו כאשר משהו השתבש עם זה. אם כן, הריץ את הפקודה docker logs, כך: sudo docker logs docker-container. החלף docker-container בשם הקונטיינר שלך.

Reading Docker Container Log File

צרף את קונטיינר Docker MongoDB לקליפת Bash

הקמת קונטיינר Docker MongoDB עלתה לך כעת, אך כיצד ניתן לנהל אותו? עשה זאת על ידי הצרפת הקונטיינר Docker לקליפת Bash עם הפקודה docker exec תחילה.

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

הרץ את הפקודה docker exec למטה כדי לצרף את הקונטיינר שלך (mymongo) לקליפת Bash.

sudo docker exec -it mymongo bash

כאשר הפקודה מושלמת, הפקודה שלך תשתנה למשהו דומה לזה שמוצג למטה. המספר האלפאנומרי הייחודי (77782fa95314) הוא מזהה הקונטיינר.

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

Attaching Docker MongoDB Container to Bash Shell

כעת הריצו את הפקודה mongo בלי ארגומנטים כדי להתחבר למסד הנתונים של MongoDB בתוך המיכל (mymongo). מסד הנתונים של MongoDB הוא המקום בו אתה מריץ את השאילתות/הפקודות שלך בmongo.

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

mongo

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

Logging in to the MongoDB shell

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

Listing Available Commands in MongoDB Shell

יצירת משתמש מנהל במסד הנתונים של MongoDB

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

1. התחבר מחדש למסד הנתונים של MongoDB והרץ את הפקודה use למעבר תחילה אל מסד הנתונים admin. בכך תעניק למשתמש המנהל את ההרשאות הנכונות לניהול מסדי הנתונים.

use admin
Switching to the Admin Database

העתק והדבק את הקוד הבא במפתח MongoDB כדי ליצור משתמש מנהל.

הקוד למטה משתמש בשיטת db.createUser() כדי ליצור משתמש עם תפקידים מנהליים. שם המשתמש (user) והסיסמה (pwd) מוגדרים מראש ואפשר לשנות אותם לפי העדפתך.

# יצירת משתמש מנהל
db.createUser(
{
	# הגדרת שם המשתמש למשתמש המנהל
	user: "ata",
	# הגדרת הסיסמה למשתמש המנהל
	pwd: "password123",
	# הגדרת התפקידים למשתמש המנהל
	roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)

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

Creating an Administrative New User

3. הרץ את השאילתה quit() למטה כדי לצאת ממסך ה-Shell של MongoDB.

quit()

4. לבסוף, הרץ את הפקודה mongo הבאה כדי לבדוק את המשתמש המנהל שיצרת (ata) על ידי התחברות לשרת MongoDB. הזן את הסיסמה של המשתמש המנהל כשיש לך הזמנה לכך.

mongo -u ata -p --authenticationDatabase admin

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

Connecting to the MongoDB Server

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

use admin
show users

למטה, תוכל לראות שהמשתמש המנהל שיצרת נמצא ברשימה.

Listing Users in Database

יצירת מסד נתונים של MongoDB

ניהול מיכל MongoDB ב־Docker לא יהיה שלם מבלי ליצור מסד נתונים. תיצור מסד נתונים חדש שתאחסן בו נתונים דרך המסד של MongoDB.

1. מתוך מפגש אינטראקטיבי בתוך מיכל ה־Docker, הרץ את הפקודה show dbs למטה כדי לרשום את כל המסדים בשרת שלך.

show dbs

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

Listing all MongoDB Databases

2. לאחר מכן, הרץ את הפקודה use למטה כדי ליצור מסד נתונים חדש. החלף <database_name> בשם המסד שתבחר. אך לדוגמה עבור הדוגמה הזו, המסד נקרא linux.

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

use <database_name>
Creating a new MongoDB Database

3. הריץ שוב את הפקודה show dbs כפי שעשית קודם (שלב אחד) כדי לראות אם המסד החדש שיצרת קיים.

show dbs

עדיין אינך רואה את מסד הנתונים החדש שנוצר (ב-Linux) ברשימה? MongoDB בונה את מסד הנתונים רק כאשר אתה שומר נתונים בו לפעם הראשונה. הנתונים יכולים להיות בצורת אוסף או אפילו מסמך.

Listing all MongoDB Databases

4. עכשיו העתק/הדבק את הקוד לתוך קופסת השורה של MongoDB ולחץ Enter.

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

# משתמש בשיטת insertOne כדי להכניס נתונים
db.linux_version.insertOne(
	# מפות מפתח:ערך להכנסה למסד הנתונים
	{ "debian" : "11",
	"ubuntu" : "20.04",
	"rocky linux" : "8.4",
	"alma linux" : "8"
	}
)

בפלט שלמטה, אתה רואה את האוסף linux_version נוצר ומגיע עם מזהה עצם (ObjectID).

Showing collection with its ID

5. הרץ את הפקודה show collections כדי לראות רשימת אוספים ולראות האם האוסף החדש linux_version קיים.

show collections

בתמונה למטה, אתה רואה שיצרת את האוסף linux_version בהצלחה.

Showing List of Collections

6. לבסוף, הפעל את הפקודה למטה כדי להציג ולאשר את הנתונים שהכנסת באוסף ה־linux_version נכונים. השיטה pretty() מאפשרת לך להציג את הנתונים בפורמט שקריא לאדם.

db.linux_version.find().pretty()

אם אי פעם תשנה את הנתונים במסד הנתונים, השתמש בשיטת Update() .

ניתן לראות את הפלט למטה בפורמט שקריא הרבה יותר.

Viewing Data from MongoDB Database

אתחול מחדש של תקופת ההרצה של Docker MongoDB

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

1. הרץ את הפקודה docker ps למטה כדי לרשום את כל מכונות ההרצה הפועלות.

sudo docker ps

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

Showing all running docker containers

2. לאחר מכן, הרץ אחת מבין הפקודות docker stop לעצירת מכונה MongoDB שרצה.

sudo docker stop mymongo
sudo docker stop container-ID

3. הרץ מחדש את הפקודה docker ps כפי שעשית בצעד הקודם (שלב אחד) כדי לבדוק אם המכונה נסגרה.

sudo docker ps

כפי שניתן לראות למטה, המכונה אינה ברשימת המכונות הפועלות, מה שמציין שהצלחת לעצור בהצלחה את המכונה.

Listing all Containers

4. כעת הפעל אחת מהפקודות docker start למטה אם החלטת לאתחל מחדש את התקופה.

sudo docker start mymongo
sudo docker start container-ID

5. לבסוף, הפעל מחדש את הפקודה docker ps כדי לראות האם התקופה פועלת.

sudo docker ps

אולי אין לך יותר שימוש בתקופה. אם כן, עליך לעצור את התקופה תחילה ולהפעיל את הפקודה rm כדי להסיר תקופה, כמו כן: sudo docker container rm mongodb. דומה לדוגמאות הקודמות, החלף mongodb בשם התקופה או במזהה התקופה.

מסקנה

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

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

Source:
https://adamtheautomator.com/docker-mongodb/