मैट कैरियर के रूप DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
में सुझाव देना मेरे लिए कारगर नहीं था । और न ही मेरे निगम के DNS सर्वरों को उस फाइल में डाला। लेकिन, इसका एक और तरीका है (पढ़ें)।/etc/default/docker
सबसे पहले, आइए समस्या का सत्यापन करें:
$ docker run --rm busybox nslookup google.com # takes a long time
nslookup: can't resolve 'google.com' # <--- appears after a long time
Server: 8.8.8.8
Address 1: 8.8.8.8
यदि कमांड लटका हुआ दिखाई देता है, लेकिन अंततः "google.com 'को हल नहीं कर सकता है" तो आप मेरे जैसी ही समस्या है।
nslookup
आदेश आदेश को IP पते में 'google.com' के पाठ का पता करने के लिए बारी में डीएनएस सर्वर 8.8.8.8 प्रश्नों। विडंबना यह है कि 8.8.8.8 Google का सार्वजनिक DNS सर्वर है । यदि nslookup
विफल रहता है, तो सार्वजनिक DNS सर्वर जैसे 8.8.8.8 आपकी कंपनी द्वारा अवरुद्ध किया जा सकता है (जो मुझे लगता है कि सुरक्षा कारणों से है)।
आपको लगता है कि चाहते हैं कि करने के लिए अपनी कंपनी के डीएनएस सर्वर को जोड़ने DOCKER_OPTS
में /etc/default/docker
चाल करना चाहिए, लेकिन जो भी कारण के लिए, यह मेरे लिए काम नहीं किया। मैं वर्णन करता हूं कि मेरे लिए नीचे क्या काम किया गया था।
समाधान :
होस्ट पर (मैं Ubuntu 16.04 का उपयोग कर रहा हूं), प्राथमिक और द्वितीयक DNS सर्वर पते का पता लगाएं:
$ nmcli dev show | grep 'IP4.DNS'
IP4.DNS[1]: 10.0.0.2
IP4.DNS[2]: 10.0.0.3
इन पतों का उपयोग करके, एक फ़ाइल बनाएँ /etc/docker/daemon.json
:
$ sudo su root
# cd /etc/docker
# touch daemon.json
इसे इसमें डालें /etc/docker/daemon.json
:
{
"dns": ["10.0.0.2", "10.0.0.3"]
}
रूट से बाहर निकलें:
# exit
अब पुनः आरंभ करें:
$ sudo service docker restart
सत्यापन :
अब जांचें कि /etc/docker/daemon.json
फ़ाइल जोड़ने से आप 'google.com' को एक आईपी पते में हल कर सकते हैं:
$ docker run --rm busybox nslookup google.com
Server: 10.0.0.2
Address 1: 10.0.0.2
Name: google.com
Address 1: 2a00:1450:4009:811::200e lhr26s02-in-x200e.1e100.net
Address 2: 216.58.198.174 lhr25s10-in-f14.1e100.net
संदर्भ :
मैंने रॉबिन विंसलो के एक लेख पर अपना समाधान आधारित किया, जो समाधान के लिए सभी श्रेय के हकदार हैं। धन्यवाद, रॉबिन!
"डॉकर्स नेटवर्किंग DNS कॉन्फिगर को ठीक करें।" रॉबिन विंसलो। 2016-11-09 को लिया गया। https://robinwinslow.uk/2016/06/23/fix-docker-networking-dns/
newgrp docker
एक पूर्ण लॉग ऑफ करने के बजाय जारी करता हूं तो खुद को देने के बाद लॉगिन करेंsudo usermod -aG docker myuserid
... इसका एक किनारे का मामला हालाँकि यह ज़रूर होता है