ما هي مجموعات عناوين Docker؟

تحصل كل شبكة Docker على نطاق خاص بها من عناوين IP يُسمّى شبكة فرعية. عند إنشاء شبكة من دون اختيار شبكة فرعية، يختار Docker نطاقًا من قائمة مضمّنة من مجموعات العناوين تبدأ بـ 172.17.0.0/16 وتمتد حتى 172.31.0.0/16 و192.168.0.0/16. يعمل هذا إلى أن يتعارض النطاق المختار مع شيء آخر، مثل VPN أو شبكة مكتب أو قاعدة بيانات موجودة على عنوان ثابت. ولإصلاح ذلك لجميع الشبكات دفعة واحدة، يمكنك تغيير مجموعات العناوين في إعدادات خدمة Docker.

وصف الأداة

تنشئ هذه الأداة إعدادات daemon.json التي تتحكم في الشبكات الفرعية التي يستخدمها Docker. أدخل نطاقًا واحدًا أو أكثر من نطاقات مجموعات العناوين وحجم كل شبكة للحصول على إعداد default-address-pools. يمكنك أيضًا تعيين عنوان جسر docker0 الافتراضي باستخدام bip. تعرض الأداة عدد الشبكات التي تتسع لها مجموعاتك وعدد المضيفين في كل شبكة، وتتحقق من إدخالك أثناء الكتابة، وتضع علامة على النطاقات التي يُرجّح أن تسبب تعارضات. تُجرى جميع العمليات الحسابية في متصفحك.

أمثلة

امنح كل شبكة جديدة نطاقًا بحجم /24 من 10.10.0.0/16، ما يتيح إنشاء 256 شبكة، لكل منها 254 مضيفًا قابلًا للاستخدام:

{
  "default-address-pools": [
    {
      "base": "10.10.0.0/16",
      "size": 24
    }
  ]
}

انقل الجسر الافتراضي إلى نطاق آخر واستخدم مجموعتي عناوين:

{
  "bip": "10.200.0.1/24",
  "default-address-pools": [
    {
      "base": "10.10.0.0/16",
      "size": 24
    },
    {
      "base": "10.20.0.0/20",
      "size": 24
    }
  ]
}

الميزات

  • عدة نطاقات لمجموعات العناوين في وقت واحد، نطاق واحد في كل سطر
  • حجم الشبكات التي يستخرجها Docker من كل مجموعة
  • عنوان اختياري لجسر docker0 الافتراضي
  • عرض عدد الشبكات التي تتسع لها المجموعات وعدد المضيفين القابلين للاستخدام في كل شبكة
  • تحذيرات بشأن النطاقات العامة، والمجموعات المتداخلة، والعناوين التي تحتوي على بتات مضيف
  • تنزيل النتيجة باسم daemon.json

آلية العمل

يُكتب النطاق على شكل عنوان وطول بادئة، مثل 10.10.0.0/16. تحدد البادئة عدد البتات، من أصل 32 بتًا، التي تمثل جزء الشبكة، بينما تمثل البتات المتبقية المضيفين. لكل مجموعة نطاق أساسي وحجم شبكة. يقسم Docker النطاق الأساسي إلى شبكات بالحجم المحدد ويوزعها واحدة تلو الأخرى، ولذلك فإن النطاق الأساسي 10.10.0.0/16 مع حجم 24 ينتج 2^(24 − 16) = 256 شبكة. تحتوي شبكة /24 على 256 عنوانًا، منها 254 عنوانًا قابلًا للاستخدام، لأن العنوان الأول هو عنوان الشبكة والعنوان الأخير هو عنوان البث. يستخدم Docker أيضًا أول عنوان قابل للاستخدام كبوابة لشبكة الجسر.

لا يمكن أن يكون الحجم أصغر من بادئة النطاق الأساسي، كما أنه محدود بـ /30، لأن الشبكة تحتاج إلى مساحة لبوابة وحاوية واحدة على الأقل.

نصائح

  • اختر نطاقات من 10.0.0.0/8 أو 172.16.0.0/12 لا تستخدمها شبكة VPN الخاصة بك ولا شبكة مكتبك. وتُعد النطاقات القريبة من 192.168.0.0/16 الأكثر عرضة للتعارض، لأن أجهزة التوجيه المنزلية والمكتبية تستخدمها
  • يستخدم جسر docker0 الافتراضي دائمًا 172.17.0.0/16. إذا تعارض ذلك مع شبكتك، فعيّن bip إلى عنوان آخر، مثل 10.200.0.1/24
  • احفظ النتيجة باسم /etc/docker/daemon.json على Linux، أو ضمن الإعدادات ← Docker Engine في Docker Desktop، ثم أعد تشغيل Docker. ادمجها مع الإعدادات الموجودة في الملف بدلًا من استبدالها
  • لا يؤثر تغيير default-address-pools إلا في الشبكات التي تُنشأ بعده. احذف الشبكات الحالية وأنشئها مرة أخرى لنقلها إلى النطاق الجديد
  • يصعب التعامل مع المجموعات التي تتداخل مع بعضها، لذا أبقِ بينها مسافة
  • عندما تظهر رسالة «تم تقسيم جميع مجموعات العناوين المحددة مسبقًا إلى شبكات فرعية بالكامل»، فهذا يعني أن Docker نفدت نطاقاته. أضف نطاقًا أساسيًا أكبر أو حجم شبكة أصغر للحصول على مزيد من الشبكات