البرمجة

حل مشكلة DNS في Docker بسهولة

عندما يتعلق الأمر بتشغيل حاويات Docker على شبكة خاصة تحتوي على خوادم DNS خاصة، قد تواجه بعض التحديات في الحصول على قدرة الحاويات على حل أسماء المضيفين بشكل صحيح. فالمشكلة تكمن في أن إعدادات الـ DNS داخل الحاوية لا تعرف عنوان خادم DNS الخاص بالشبكة الخاصة. في الواقع، يظهر من الشفرات التي قدمتها أن عنوان الـ DNS داخل الحاوية مُعين على خوادم DNS عامة مثل خوادم Google (8.8.8.8 و 8.8.4.4)، وهذا بالطبع لن يمكنها من حل أسماء المضيفين الخاصة بك.

من الواضح أن الحل البسيط هو تعيين عنوان الـ DNS الخاص بالشبكة الخاصة داخل إعدادات Docker. يمكنك القيام بذلك يدويًا عن طريق تشغيل Docker مع مفتاح --dns وتحديد عنوان الـ DNS، وهذا ما قمت بذكره بالفعل. لكن، يواجه البعض تحديات عند التنقل بين الشبكات، وهذا يتطلب تغيير يدوي لإعدادات Docker كلما حدث تغيير في الشبكة.

هناك طريقة أكثر تنظيمًا وأتمتة لهذا الحل، وهي باستخدام “Docker Network Drivers”. يمكنك إنشاء شبكة خاصة في Docker وتحديد عنوان الـ DNS الخاص بها. هذا سيضمن أن تتم إعادة تكوين إعدادات DNS تلقائيًا لجميع الحاويات التي تنضم إلى هذه الشبكة. لنقم بذلك خطوة بخطوة:

أولاً، يمكنك إنشاء شبكة خاصة جديدة في Docker باستخدام الأمر التالي:

bash
docker network create --driver bridge --subnet 192.168.0.0/24 --dns 192.168.0.1 my_custom_network

في هذا الأمر، قمنا بتحديد محرك الشبكة بالقيمة “bridge” ونطاق IP للشبكة الخاصة وعنوان DNS الخاص بها.

ثم، يمكنك تشغيل حاوية جديدة والانضمام إليها إلى هذه الشبكة باستخدام الأمر التالي:

bash
docker run --network=my_custom_network -d your_container_image

بهذا، ستكون حاويتك الجديدة الآن قادرة على حل أسماء المضيفين باستخدام عنوان الـ DNS الخاص بالشبكة الخاصة.

هذا الحل يعتبر أكثر تنظيمًا وتمويلاً ويعني أنه لن يكون عليك التدخل يدويًا في إعدادات Docker كلما حدث تغيير في الشبكة.

المزيد من المعلومات

بالطبع، لا يتوقف دعم Docker عند هذا الحد. يمكن أيضًا استخدام خوادم DNS مخصصة داخل ملفات التكوين لـ Docker لضمان حل المشكلة بشكل دائم وتلقائي.

في ملفات التكوين لـ Docker، يمكنك تحديد إعدادات DNS المخصصة التي يجب استخدامها عند بناء وتشغيل الحاويات. يمكنك القيام بذلك عبر ملف daemon.json الذي يحتوي على إعدادات Docker العامة.

هذه خطوات توضيحية لتحديد خادم DNS مخصص في Docker:

  1. قم بإنشاء ملف daemon.json في المسار /etc/docker/ إذا لم يكن موجودًا بالفعل.

  2. قم بتحرير الملف المنشأ باستخدام محرر نصوص مفضل لديك، مثل Vim أو Nano.

  3. أضف الإعدادات التالية إلى الملف daemon.json:

json
{ "dns": ["192.168.0.1"] }
  1. احفظ التغييرات وأغلق المحرر.

  2. أعد تشغيل خدمة Docker لتحميل التغييرات باستخدام الأمر:

bash
sudo systemctl restart docker

بعد هذه الخطوات، ستقوم Docker الآن بتضمين عنوان الـ DNS المخصص في إعداداتها عند تشغيل الحاويات، مما يسمح لها بحل أسماء المضيفين بنجاح في الشبكة الخاصة بك.

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

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

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر