2015-11-14 4 views
5

किसी कारण से, मुझे डॉकर डॉकरहब के साथ संवाद करने के लिए नहीं मिल सकता है; search और pull आदेश कुछ DNS संबंधित कारणों के लिए विफल हो जाते हैं। उदाहरण के लिए:डॉकर पुल 127.0.1.1:53 पर index.docker.io को देखने में विफल रहता है (अनारशनल DNS संदेश नहीं कर सकता)

$ docker pull redis 
Pulling repository redis 
Get https://index.docker.io/v1/repositories/library/redis/images: dial tcp: lookup index.docker.io on 127.0.1.1:53: cannot unmarshal DNS message 

मेरा इंटरनेट कनेक्शन ठीक है। मैं 127.0.1.1 पिंग कर सकते हैं। क्या यह एक स्थानीयहोस्ट पता है? क्या वहां कुछ प्रकार की डॉकरहब विशिष्ट DNS सेवा चल रही है जो मेरी मशीन पर टूटा जा सकता है? मेरे नेटवर्क के साथ कुछ भी गलत नहीं लगता है।

मैंने Google के DNS (8.8.8.8) का उपयोग करने के लिए अपने नेटवर्क कनेक्शन को कॉन्फ़िगर करने का प्रयास किया है, लेकिन इससे कोई फर्क नहीं पड़ता।

अद्यतन

अजीब है, मैं पिंग index.docker.io, लेकिन अगर मैं एक ब्राउज़र में वहाँ नेविगेट करने के लिए प्रयास करते हैं, मैं hub.docker.com को रीडायरेक्ट नहीं कर सकते हैं।

अद्यतन

मैं अब इस बात की पुष्टि कर सकते हैं कि यह केवल एक होटल में एक लैन पर होता है,। मुझे नहीं पता कि वे क्या कर रहे हैं, या यह केवल डॉकर को क्यों प्रभावित करता है, न कि गिट या बिट्टोरेंट या कोई अन्य कनेक्टेड टूल।

+0

क्या आपके पास अपने इंटरनेट कनेक्शन के लिए प्रॉक्सी है? – VonC

+0

मैं 8.8.8.8 पर Google के DNS का उपयोग कर रहा था, लेकिन मैंने पहले ही इसे अक्षम करने का प्रयास किया है। मैं एक बड़े होटल में हूं, अगर वे अपने यातायात में अजीब चीजें करते हैं तो मुझे आश्चर्य नहीं होगा। –

+0

क्या आप सीधे अपने डॉकर सत्र के लिए लिनक्स होस्ट का उपयोग कर रहे हैं, या विंडोज या मैक के साथ एक लिनक्स वीएम? – VonC

उत्तर

3

प्रश्न थोड़ा पुराना है, लेकिन चूंकि यह अनुत्तरित रहता है और मैं इसमें ठोकर खा जाता हूं, वहां जाता है।

आपके द्वारा रहने वाले होटल के लिए स्थानीय नेटवर्क संभवतः डॉकर द्वारा बनाए गए वर्चुअल नेटवर्क के साथ अपने नेटवर्क को संबोधित करने के लिए संबोधित कर रहा था। मेरे पास एक कॉर्पोरेट नेटवर्क में एक ही तरह का जारी किया गया था।

सबसे आसान (अभी तक बहुत अच्छी तरह से प्रलेखित नहीं) फिक्स डॉकर को '--bip' पैरामीटर का उपयोग करके वर्चुअल लैन के लिए मनमाने ढंग से नेटवर्क पता का उपयोग करने के लिए मजबूर करना है। लिनक्स में आमतौर पर मैक पर डॉकर कॉन्फ़िगरेशन को संपादित करके हासिल करना आसान होता है, फिर भी मैक पर (बस अगर कोई इसमें फंस जाता है) तो फ़ाइल को बदलने के लिए विशेष रूप से कठिन होता था। https://github.com/docker/docker/issues/25064 पर यह एक अच्छा पठन लें यदि यह आपका मामला है।

असल में, आपको एक नेटवर्क सेगमेंट ढूंढना होगा जो आपके द्वारा कनेक्ट किए गए नेटवर्क पर उपयोग में नहीं है। डॉकर डिफ़ॉल्ट रूप से ऐसा करने का प्रयास करेगा: यह पहले निजी सीआईडीआर का उपयोग करेगा जो आपके किसी भी नेटवर्क इंटरफेस से टकराव नहीं करता है। यदि आप एक निजी लैन सेगमेंट पर हैं जो किसी अन्य निजी सेगमेंट के माध्यम से मार्ग पर होता है, हालांकि, डॉकर इसे नहीं देख सकता है और एक सीडीआरआर के साथ स्थानीय नेटवर्क बनाने का अंत कर सकता है, जिससे पैकेट को इससे बाहर निकलने से रोका जा सकता है।

एक उदाहरण है, स्पष्टीकरण के लिए:

आपका आईपी पता/24 के एक नेटमास्क साथ 192.168.10.2 हो सकता है। इस नेटवर्क में 1 9 2.168.10.1/24 पर एक डिफ़ॉल्ट गेटवे हो सकता है, लेकिन वह गेटवे आपको 172.17.1.1 के साथ किसी अन्य राउटर के माध्यम से रूट करता है।

डॉकर ध्यान देगा कि 1 9 2.168.10.0/24 उपयोग में है और 172.16.0.0/16 को पते के साथ वर्चुअल नेटवर्क बनाते हैं - इसलिए आपके कंटेनर स्थानीय रूप से उस सीआईडीआर के तहत सभी पते को रूट करने का प्रयास करेंगे, और कभी नहीं मिलेगा 172.17.1.1 बाहरी राउटर। ऐसे मामले में, आप 10.0.0.1/16 कहें, आप अपनी --bip को कुछ अलग में बदलना चाहते हैं। इससे पैकेट को सही तरीके से रूट करने की अनुमति मिल जाएगी।

संबंधित मुद्दे