كيفية نشر وإدارة حاوية Docker لقاعدة بيانات MongoDB

مونغو دي بي هو قاعدة بيانات وثائق مفتوحة المصدر وشهيرة توفر أداءً عاليًا ومرونة كبيرة. ولكن هل جربت أن تقوم بـ containerize قاعدة بيانات MongoDB لمشاريعك؟ إذا لم يكن الأمر كذلك، فستكون في مفاجأة!

في هذا البرنامج التعليمي، ستتعلم كيفية نشر وتأمين وإدارة MongoDB بشكل فعال باستخدام Docker. لذا استمر في القراءة وكن سيدًا لنفسك في نشر حاويات Docker لـ MongoDB!

المتطلبات الأساسية

يتضمن هذا البرنامج التعليمي عروضًا توضيحية عملية. لمتابعته، تأكد من أن لديك ما يلي:

  • جهاز كمبيوتر بنظام التشغيل أوبونتو – يستخدم هذا البرنامج التعليمي أوبونتو 20.04 LTS
  • A user with sudo permission
  • دوكر – يستخدم هذا البرنامج التعليمي Docker 20.10.9

تنزيل صورة دوكر 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 العادي في نظام Linux.

sudo docker ps

في المخرجات الموضحة أدناه ، يمكنك رؤية قسم المنافذ الذي يقوم بسرد جميع المنافذ المخصصة للحاوية لاستماع الاتصالات الواردة.

في هذا المثال، يتم ربط المنفذ 27017 بالمضيف. الإخراج أدناه يشير إلى أنه يمكنك الوصول إلى مثيل MongoDB على هذا الحاوية عبر localhost:27017 من المضيف.

Checking Docker MongoDB Container Status

ربما ترغب في رؤية ملف السجل الخاص بالحاوية mymongo لتحديد ما حدث في قاعدة البيانات/المثيل الخاص بك Mongo عندما يحدث خطأ فيها. إذا كان الأمر كذلك، قم بتشغيل الأمر docker logs، مثل هذا: sudo docker logs docker-container. استبدل docker-container باسم حاوي Docker الخاص بك.

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() أدناه للخروج من قالب 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

إدارة حاوية Docker لـ MongoDB لا تكتمل من دون إنشاء قاعدة بيانات. ستقوم بإنشاء قاعدة بيانات MongoDB جديدة ستخزن فيها البيانات عبر واجهة سطر الأوامر في MongoDB.

1. من داخل جلسة تفاعلية داخل حاوية Docker، قم بتشغيل الأمر show dbs أدناه لعرض جميع قواعد البيانات في الخادم الخاص بك.

show dbs

أدناه، يمكنك رؤية قاعدة بيانات إدارية وقاعدة بيانات تكوين وقاعدة بيانات محلية. تقوم واجهة سطر الأوامر في MongoDB بإنشاء هذه القواعد تلقائيًا افتراضيًا في كل خادم 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

لا تزال لا ترى قاعدة البيانات الجديدة (لينكس) في القائمة؟ تقوم 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/