يوفّر Docker بيئة معزولة لتشغيل MySQL دون تثبيت الخادم ومكوّناته مباشرة على نظام التشغيل. هذا الأسلوب مناسب للتعلّم والتجارب المحلية لأنه يجعل إنشاء البيئة وإيقافها وإعادة تشغيلها عملية واضحة وقابلة للتكرار.
ما الذي نحتاجه قبل البدء؟
- تثبيت Docker Desktop أو Docker Engine وتشغيله.
- مساحة تخزين كافية لصورة MySQL وملفات قاعدة البيانات.
- معرفة أساسية بالطرفية أو موجّه الأوامر.
- كلمة مرور قوية غير مستخدمة في أي خدمة أخرى.
إذا كانت مفاهيم قواعد البيانات جديدة عليك، ابدأ أولًا بقراءة الدرس الأول: ما هي MySQL؟.
إنشاء حاوية MySQL
ينشئ الأمر التالي حاوية باسم واضح، ويضيف وحدة تخزين دائمة، ويربط المنفذ محليًا. استبدل قيمة كلمة المرور قبل التنفيذ ولا تستخدمها في بيئة إنتاجية.
docker run --name mysql-learning -e MYSQL_ROOT_PASSWORD=change-this-password -p 127.0.0.1:3306:3306 -v mysql_data:/var/lib/mysql -d mysql:8.4
الخيار --name يحدد اسم الحاوية، والمتغير MYSQL_ROOT_PASSWORD يضبط كلمة مرور المستخدم الإداري عند التهيئة الأولى. أما -v فيربط ملفات البيانات بوحدة تخزين حتى لا تضيع عند حذف الحاوية. وربط المنفذ بالعنوان 127.0.0.1 يحدّ الوصول من الجهاز المحلي في بيئة التعلّم.
التحقق من تشغيل الخادم
docker ps
docker logs mysql-learning
يُظهر الأمر الأول الحاويات العاملة. ويعرض الثاني سجل MySQL؛ انتظر اكتمال التهيئة قبل محاولة الاتصال، لأن التشغيل الأول قد يستغرق بعض الوقت.
الاتصال بـ MySQL داخل الحاوية
docker exec -it mysql-learning mysql -uroot -p
سيطلب منك العميل كلمة المرور التي اخترتها. بعد نجاح الاتصال يمكنك التحقق من الخادم:
SELECT VERSION();
SHOW DATABASES;
لا تضع كلمة المرور مباشرة بعد الخيار -p داخل سجل الأوامر، ولا تستخدم المستخدم root لتطبيق حقيقي. أنشئ مستخدمًا بصلاحيات محدودة وفق احتياجات التطبيق.
إيقاف الحاوية وإعادة تشغيلها
docker stop mysql-learning
docker start mysql-learning
تبقى البيانات محفوظة في وحدة التخزين mysql_data. ويمكن حذف الحاوية لاحقًا دون حذف الوحدة، لكن حذف وحدة التخزين نفسها يؤدي إلى فقد البيانات، لذا تأكد من النسخ الاحتياطي قبل أي تنظيف.
مشكلات شائعة وحلولها
- المنفذ 3306 مستخدم: أوقف الخدمة المتعارضة أو اربط منفذًا محليًا آخر مثل
3307:3306. - الحاوية تتوقف مباشرة: راجع السجل باستخدام
docker logsوتأكد من صحة المتغيرات. - فشل الاتصال في البداية: انتظر اكتمال التهيئة ثم أعد المحاولة.
- اختفاء البيانات: تأكد من استخدام وحدة تخزين وعدم تشغيل حاوية جديدة دون الربط الصحيح.
ملاحظة حول الإصدارات والتحديثات
ثبّت وسم إصدار واضح لصورة MySQL بدل الاعتماد على latest في المشاريع المهمة، لأن التحديث التلقائي قد يغيّر السلوك. قبل الترقية اقرأ ملاحظات الإصدار، واختبر نسخة من البيانات، وأنشئ نسخة احتياطية قابلة للاستعادة. كما يُفضّل توثيق أمر التشغيل ونسخة الصورة المستخدمة داخل المشروع.
الخطوة التالية
بعد تجهيز الخادم، انتقل إلى الدرس الثالث لتصميم قاعدة البيانات وإنشاء الجداول.
مصادر رسمية
الخلاصة: تمنحك الحاوية بيئة قابلة للتكرار، بينما تحافظ وحدة التخزين على البيانات. راقب سجل التشغيل، وقلّل نطاق الوصول، ولا تستخدم بيانات اعتماد المثال في الأنظمة الحقيقية.