172.17.0.0 रेंज का उपयोग न करने के लिए डॉकर को कॉन्फ़िगर करना

कैप्टिव पोर्टल्स और डिफॉल्ट डॉकर आईपी रेंज के साथ समस्याओं के कारण मैं डॉकर को 198.18.0.0 रेंज का उपयोग करने की कोशिश कर रहा हूं, बजाय 172.17.0.0 के, जो उन ट्रेनों पर उपयोग किए जाने वाले कैप्टिव पोर्टल्स के साथ टकराता है जहां मैं रहता हूं ।

निम्नलिखित डॉक्स, मैंने बनाया /etc/docker/daemon.json, और इसमें निम्नलिखित डालें:

{    "bip":"198.18.0.0/16"}

यह डॉकर 0 के लिए काम करता है, लेकिन ऐसा लगता है कि किसी भी अन्य नेटवर्क को प्रभावित नहीं किया है, और डॉकर कंपोज़ का उपयोग करके बनाया गया पहला नेटवर्क 172.17.0.0 है, जो क्लैश को फिर से बनाता है ।

डिफ़ॉल्ट सबनेट को बदलने के लिए मैं क्या कर सकता हूं सभी डॉकर नेटवर्क (अधिमानतः प्रत्येक कंपोज़ फ़ाइल में मेरी कस्टम आईपी रेंज को बताए बिना)?

डिफ़ॉल्ट सीमा को फिर से परिभाषित करना संभव है ।

$ docker -vDocker version 18.06.0-ce, build 0ffa825

डॉकर डेमॉन के लिए कॉन्फ़िगरेशन फ़ाइल संपादित करें या बनाएं:

# nano /etc/docker/daemon.json

लाइनें जोड़ें:

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

पुनः आरंभ dockerd:

# service docker restart

परिणाम की जाँच करें:

$ docker network create foo$ docker network inspect foo | grep Subnet                    "Subnet": "10.10.1.0/24"

यह डॉकर-कंपोज़ के लिए भी काम करता है । अधिक जानकारी यहाँ https://github.com/moby/moby/pull/29376 (विलय)

तीन स्थान हैं डॉकर नेटवर्क सबनेट उत्पन्न करेगा ।

  • डिफ़ॉल्ट पुल
  • उपयोगकर्ता उत्पन्न पुल नेटवर्क
  • झुंड मोड उत्पन्न ओवरले नेटवर्क

डिफ़ॉल्ट ब्रिज (जिसे "ब्रिज" कहा जाता है) के लिए, आप बीआईपी निर्दिष्ट कर सकते हैं (मेरा मानना है कि ब्रिज आईपी है; सुनिश्चित करें कि यह एक होस्ट आईपी है, नेटवर्क आईपी नहीं) में daemon.json फ़ाइल। और उपयोगकर्ता उत्पन्न पुल नेटवर्क के लिए आप चुनने के लिए एक सबनेट पूल को परिभाषित कर सकते हैं (यह मानते हुए कि उपयोगकर्ता मैन्युअल रूप से सबनेट निर्दिष्ट नहीं करता है) । इन दोनों के लिए, आपका /etc/docker/daemon.json की तरह दिखेगा:

{  "bip": "10.200.0.1/24",  "default-address-pools":[    {"base":"10.201.0.0/16","size":24},    {"base":"10.202.0.0/16","size":24}  ]}

उपरोक्त प्रत्येक पता पूल सेटिंग उस सीमा से आवंटित किए जाने वाले सीआईडीआर रेंज और सबनेट के आकार को परिभाषित करती है । तो उपरोक्त दो कक्षा बी श्रेणियों को परिभाषित करता है जिन्हें कक्षा सी नेटवर्क (/24) के रूप में आवंटित किया जाता है । डिफ़ॉल्ट पता पूल के लिए आपको कम से कम 18.06 की आवश्यकता है । इस परिवर्तन को लागू करने के लिए आपको डॉकर डेमॉन को फिर से लोड करना होगा (systemctl reload docker). और यह परिवर्तन केवल नए बनाए गए उपयोगकर्ता नेटवर्क को संशोधित करेगा, इसलिए आपको कंटेनरों को रोकना होगा और मौजूदा नेटवर्क को गलत सीमा में हटाना होगा ।


18.09 में, डॉकर ने झुंड मोड उत्पन्न ओवरले नेटवर्क के लिए पता सीमा निर्दिष्ट करने की क्षमता को जोड़ा । यह केवल झुंड निर्माण के समय ही किया जा सकता है, उम्मीद है कि भविष्य में इसे अनुमति देने के लिए अपडेट किया जाएगा docker swarm update इन पूलों को समायोजित करने के लिए:

$ docker swarm init \  --default-addr-pool 10.202.0.0/16 \  --default-addr-pool 10.203.0.0/16 \  --default-addr-pool-mask-length 24