مونغو دي بي هو قاعدة بيانات وثائق مفتوحة المصدر وشهيرة توفر أداءً عاليًا ومرونة كبيرة. ولكن هل جربت أن تقوم بـ 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.
كما يمكنك أن ترى أدناه، يقوم الأمر تلقائيًا بسحب أحدث إصدار من الصورة ووسمه كـ latest.

الآن قم بتشغيل الأمر docker images
أدناه لعرض جميع الصور المتاحة على الخادم الخاص بك.
فيما يلي، يمكنك رؤية صورة MongoDB موسومة كـ latest.

نشر حاوية MongoDB بواسطة Docker
من الصورة MongoDB التي قمت بتنزيلها، يمكنك الآن نشر حاوية MongoDB. ستقوم بتهيئة حاوية MongoDB الخاصة بك باستخدام الملف التنفيذي mongo، وإنشاء دليل للبيانات. بعد ذلك، ستقوم بتعريف الربط بين منطقة بيانات حاوية Docker وجهاز الخادم.
1. قم بتشغيل الأمر mkdir
أدناه لإنشاء دليل للبيانات يسمى mongodata
لتخزين قاعدة بيانات MongoDB والسجلات.
2. بعد ذلك، قم بتنفيذ الأمر docker run
أدناه لإنشاء حاوية بالاسم mymongo
. بالإضافة إلى ذلك، يتم بدء تشغيل الحاوية بناءً على TTY شبه تفاعلي (-it
)، في حالة الحاجة لعرض الإخراج عند بدء تشغيل الحاوية.
بالنهاية ، يُربط الدليل الجديد الذي تم إنشاؤه mongodata (-v
) بالدليل الداخلي، /data/db. الخيار -d
يبدأ التشغيل في الحاوية في وضع منفصل، حيث يعمل كعملية خلفية ويعيد إخراج واجهة الأوامر عند الإنشاء.
تقوم النظام تلقائيًا بإنشاء الدليل /data/db عند تشغيل الحاوية لتخزين بيانات التغييرات التي تقوم بها في الحاوية. يعمل هذا الدليل في وضع قراءة فقط مماثل ويمكن تمكين تخزين البيانات الثابتة على نظام الاستضافة.
بمجرد أن تكتمل الأمر بنجاح ، سترى مخرجات مثل تلك الموجودة أدناه.

3. في النهاية ، قم بتشغيل الأمر docker ps
أدناه لتحديد معرف الحاوية والتحقق من حالتها. يعرض أمر docker ps
جميع المعلومات حول الحاوية التي تعمل حاليًا.
أمر
docker ps
يمكن مقارنته بأمرps
العادي في نظام Linux.
في المخرجات الموضحة أدناه ، يمكنك رؤية قسم المنافذ الذي يقوم بسرد جميع المنافذ المخصصة للحاوية لاستماع الاتصالات الواردة.
في هذا المثال، يتم ربط المنفذ 27017 بالمضيف. الإخراج أدناه يشير إلى أنه يمكنك الوصول إلى مثيل MongoDB على هذا الحاوية عبر localhost:27017 من المضيف.

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

ربط حاوية Docker MongoDB بمحطة Bash
لقد قمت للتو بنشر حاوية Docker MongoDB، ولكن كيف يمكنك إدارتها؟ افعل ذلك عن طريق ربط حاوية Docker بمحطة Bash باستخدام الأمر docker exec
أولاً.
ربط الحاوية الخاصة بك بمحطة Bash أمر ضروري لأن الحاوية تعمل حاليًا في وضع مفصول (يعمل في الخلفية). وإذا كانت الحاوية تعمل في الخلفية، فلن تتلقى الحاوية أي إدخال أو عرض إخراج.
قم بتشغيل الأمر docker exec
أدناه لربط حاويتك (mymongo
) بمحطة Bash.
عند اكتمال الأمر، سيتغير مؤشرك إلى شيء مثل الذي بالأسفل. الرقم الألفا رقمي الفريد (77782fa95314) هو معرف الحاوية.
تعتبر معرفات الحاويات أمرًا أساسيًا لتجنب تضارب الأسماء وتحديد الحاويات بشكل فعال بين المضيفين، لذا حاول عدم تغييرها.

قم الآن بتشغيل أمر mongo
بدون أي مُعلمات لتسجيل الدخول إلى قذارة MongoDB في الحاوية (mymongo). قذارة MongoDB هي المكان الذي تشغل فيه استعلامات/أوامر mongo الخاصة بك.
بمجرد أن تكون داخل الحاوية، يمكنك تشغيل أي أمر دون بادئة
sudo
لأنك الآن مستخدم جذر داخل الحاوية. كل تغيير تقوم به في الحاوية لن يؤثر على نظام المضيف الخاص بك.
من خلال النظر إلى الرسالة النصية المعروضة أدناه، يمكنك أن تعرف أنك الآن في قذارة MongoDB.

إذا كنت تفضل رؤية جميع الأوامر المتاحة في قذارة MongoDB، قم بتشغيل أمر
help
، كما هو موضح أدناه.

إنشاء مستخدم إداري MongoDB
بعد نشرك لخادم MongoDB داخل حاوية Docker، ستقوم الآن بإنشاء مستخدم إداري MongoDB. يتيح لك المستخدم الإداري الاتصال بخادم MongoDB وإدارة قواعد البيانات.
1. قم بتسجيل الدخول إلى قذارة MongoDB مرة أخرى وقم بتشغيل أمر use
أدناه للتبديل أولاً إلى قاعدة البيانات admin
. يقدم هذا الأمر الإداري الحق في إدارة قواعد البيانات.

انسخ والصق الكود التالي في سطر الأوامر الخاص بـ MongoDB لإنشاء مستخدم إداري.
الكود أدناه يستخدم الأسلوب db.createUser()
لإنشاء مستخدم بأدوار إدارية. اسم المستخدم (user
) وكلمة المرور (pwd
) أدناه مدمجة، يمكنك تغييرها حسب تفضيلك.
إذا نجح الكود، ستحصل على رسالة مشابهة للواحدة أدناه في سطر الأوامر الخاص بـ MongoDB.

3. قم بتشغيل الاستعلام quit()
أدناه للخروج من قالب MongoDB.
4. في النهاية، قم بتشغيل الأمر التالي mongo
لاختبار المستخدم الإداري الذي قمت بإنشائه (ata
) من خلال الاتصال بخادم MongoDB. أدخل كلمة المرور للمستخدم الإداري عندما يُطلب منك ذلك.
كما ترون أدناه، يقوم خادم MongoDB بطباعة إصدار خادم MongoDB إذا تم الاتصال بالخادم بنجاح.

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

إنشاء قاعدة بيانات MongoDB
إدارة حاوية Docker لـ MongoDB لا تكتمل من دون إنشاء قاعدة بيانات. ستقوم بإنشاء قاعدة بيانات MongoDB جديدة ستخزن فيها البيانات عبر واجهة سطر الأوامر في MongoDB.
1. من داخل جلسة تفاعلية داخل حاوية Docker، قم بتشغيل الأمر show dbs
أدناه لعرض جميع قواعد البيانات في الخادم الخاص بك.
أدناه، يمكنك رؤية قاعدة بيانات إدارية وقاعدة بيانات تكوين وقاعدة بيانات محلية. تقوم واجهة سطر الأوامر في MongoDB بإنشاء هذه القواعد تلقائيًا افتراضيًا في كل خادم MongoDB.

2. بعد ذلك، قم بتشغيل الأمر use
أدناه لإنشاء قاعدة بيانات جديدة. استبدل <database_name>
بالاسم الذي تختاره لقاعدة البيانات الخاصة بك. ولكن لهذا المثال، يكون اسم قاعدة البيانات هو linux
.
يقوم الاستعلام
use
بتحويل قاعدة البيانات الحالية إلى تلك التي تحددها إذا كانت موجودة. إذا لم تكن موجودة، يقوم الاستعلامuse
بإنشاء قاعدة بيانات جديدة والتحول تلقائيًا إليها.

3. قم بإعادة تشغيل الأمر show dbs
كما فعلت سابقًا (الخطوة الأولى) لرؤية ما إذا كانت القاعدة التي أنشأتها موجودة.
لا تزال لا ترى قاعدة البيانات الجديدة (لينكس) في القائمة؟ تقوم MongoDB بإنشاء قاعدة البيانات فقط عند تخزين البيانات فيها لأول مرة. قد تكون البيانات في شكل مجموعة أو حتى وثيقة.

4. الآن انسخ/الصق الكود أدناه إلى واجهة سطر MongoDB واضغط Enter.
الكود أدناه ينشئ مجموعة جديدة بالاسم linux_version
، يمكنك تغييرها إلى الاسم الذي تفضله. تحتوي المجموعة على البيانات بتنسيق الأزواج مفتاح:قيمة.
في الناتج أدناه، يمكنك رؤية مجموعة linux_version
تم إنشاؤها وتأتي مع ObjectID.

5. قم بتشغيل الأمر show collections
لرؤية قائمة المجموعات وتحقق مما إذا كانت المجموعة الجديدة linux_version
موجودة.
يمكنك رؤية أدناه أنك قد أنشأت بنجاح مجموعة linux_version.

6. أخيرًا ، قم بتشغيل الأمر أدناه لعرض وتأكيد البيانات التي قمت بإدراجها في مجموعة linux_version
والتأكد من صحتها. يسمح لك الأسلوب pretty() بعرض البيانات بتنسيق قابل للقراءة من قبل الإنسان.
إذا قمت بتعديل البيانات في قاعدة البيانات، استخدم الأسلوب
Update()
.
يمكنك رؤية الناتج أدناه بتنسيق قراءة أفضل.

إعادة تشغيل حاوية Docker MongoDB
حتى الآن، لديك حاوية Docker MongoDB تعمل بنجاح. ولكن ماذا لو لم تعد بحاجة إلى الحاوية، أو ماذا لو لم تعمل؟ يمكن أن تساعدك بضعة أوامر Docker في التوقف وإعادة التشغيل، وحتى إزالة حاوية Docker MongoDB.
1. قم بتشغيل الأمر docker ps
أدناه لعرض جميع الحاويات الجارية.
لاحظ اسم ومعرف الحاوية التي ترغب في إيقافها أو إعادة تشغيلها أو إزالتها، كما هو موضح أدناه.

2. بعد ذلك، قم بتشغيل أحد أوامر docker stop
أدناه لإيقاف تشغيل حاوية MongoDB جارية.
3. أعد تشغيل الأمر docker ps
كما فعلت سابقًا (الخطوة الأولى) للتحقق مما إذا كانت الحاوية قد توقفت.
كما يمكن رؤية أدناه، الحاوية ليست في قائمة الحاويات الجارية، مما يشير إلى أنك قمت بإيقاف تشغيل الحاوية بنجاح.

4. قم بتشغيل أحد أوامر docker start
أدناه إذا قررت إعادة تشغيل حاوية.
5. في النهاية، قم بتشغيل الأمر docker ps
مرة أخرى لرؤية ما إذا كانت الحاوية قيد التشغيل.
ربما ليس لديك حاجة إضافية للحاوية. إذا كان الأمر كذلك، يجب عليك أولاً إيقاف تشغيل الحاوية وتشغيل الأمر
rm
لإزالة الحاوية، مثل هذا:sudo docker container rm mongodb
. على غرار الأمثلة السابقة، استبدلmongodb
بالاسم الخاص بالحاوية أو معرف الحاوية.
الختام
في هذا البرنامج التعليمي، لقد تعلمت كيفية نشر وإدارة حاوية MongoDB باستخدام Docker من خلال إنشاء مستخدم مسؤول لإنشاء قاعدة بيانات وتخزين البيانات فيها. لقد أدركت أنه يمكنك إيقاف تشغيل، إعادة تشغيل وإزالة الحاويات التي لم تعد بحاجة إليها للحفاظ على صور Docker نظيفة.
نشر وإدارة MongoDB باستخدام Docker هو الخطوة الأولى نحو الاستفادة من تقنية التحاويل وتقليل التكلفة الزائدة. لماذا لا تستخدم هذه الخطوة الأولى لاستكشاف MongoDB أكثر ورؤية كيف يمكن لحاوية MongoDB باستخدام Docker أن تساعد في مشاريعك؟