डॉकटर कंटेनर के अंदर मेरी /etc/resolv.conf फ़ाइल को ओवरराइड करता है


17

मैं अपना resin/rpi-raspbian:jessieकंटेनर सेट करना चाहता हूं /etc/resolv.conf:

nameserver 208.67.222.222
nameserver 208.67.220.220

मेरी डॉकफाइल में निम्नलिखित पंक्ति है:

ADD resolv.conf /etc/resolv.conf

इस जोड़ी गई फ़ाइल में सही नेमसर्वर हैं।

मेरे डॉकर होस्ट /etc/resolv.confमें सही जानकारी है।

मैं कंटेनर को इस तरह चला रहा हूं:

docker run -itd --cap-add=NET_ADMIN --device /dev/net/tun \
-v /home/pi/share/ovpn:/ovpn \
--privileged --network=internet_disabled --name vpn-client \
--dns=208.67.222.222 \
openvpn-client_nat-gateway /bin/bash

इस सब के बावजूद, कंटेनर यह उत्पादन देता है:

root@642b0f4716ba:/# cat /etc/resolv.conf
nameserver 127.0.0.11
options ndots:0

यह केवल तब होता है जब मैं resolv.conf को मैन्युअल रूप से कंटेनर के भीतर से बदल देता हूं (या docker निष्पादित) कि यह सही दिखता है।

मैं इसके बजाय इसे निष्पादित कमांड के साथ ठीक करने से बचना चाहता हूं। किसी को भी एक विचार है कि यहाँ क्या हो रहा है?


उनकी विकि पर कुछ मामले वर्णित हैं जो आपकी स्थिति को स्पष्ट कर सकते हैं।
जूली पेलेटियर

मेरे सवाल और जवाब पर एक नजर ।
ज़िनाब अब्बासिमज़र

जवाबों:


14

AFAIK, डॉकटर कुछ फ़ाइलों को एक छवि में ओवरराइड करता है जब यह शुरू होता है , भले ही उन्हें डॉकफाइल में जोड़ा गया हो। यह सुनिश्चित करने के लिए शामिल है /etc/hosts, और सबसे अधिक संभवतया इसके लिए /etc/resolv.confभी होता है। यह स्पष्ट रूप से डॉकर के डिफ़ॉल्ट "आंतरिक" नेटवर्क को ठीक से बनाने के लिए उपयोग किया जाता है (ताकि छवियां एक-दूसरे को देखें, लेकिन मेजबान नहीं, आदि) यदि आप वास्तव में सुनिश्चित हैं कि आप उन फ़ाइलों में से कुछ को ओवरराइड / संशोधित करना चाहते हैं, तो मेरा मानना ​​है कि आपको अवश्य करना चाहिए उस रनटाइम एक्शन के हिस्से के रूप में, जो CMDलाइन के हिस्से के रूप में है । उदाहरण के लिए:

...
ADD resolv.conf /etc/resolv.conf.override
CMD cp /etc/resolv.conf.override /etc/resolv.conf && \
        your_old_commands...

3
यह सही है। /etc/resolv.confएक कंटेनर शुरू होने पर मेजबान से कॉपी किया जाता है।
समझदार

4

जैसा कि मैं देख सकता हूँ कि आप उपयोग कर रहे हैं user-defined networksऔर डॉकर इंजन संस्करण> = 1.10। तो के बारे में आधिकारिक docker इंजन प्रलेखन से Embedded DNS server in user-defined networks:

ये --dns IP पते एम्बेडेड DNS सर्वर द्वारा प्रबंधित किए जाते हैं और कंटेनर के /etc/resolv.conf फ़ाइल में अपडेट नहीं किए जाएंगे।

आपके डीएनएस को काम करना है, लेकिन आप किसी भी कॉन्फ़िगरेशन फ़ाइल में नहीं देखेंगे।

संदर्भ


0

मैंने इस मुद्दे को हल कर लिया है अगर यह एज़्योर में कंटेनरों के लिए वेब ऐप है।

कर रहे हैं 2 कंटेनर दोस्त । कुडू और मेजबान

कदम

1. अपने docker फ़ाइल से sst को याद करें (इसमें sshd config भी शामिल करें)

2. एक कंटेनरस्टार्ट को बनाएँ। (जो रेसोल्व.कॉन को अपडेट करता है)

3. वहाँ अंदर प्रवेश बिंदु सेट करें

अब मेजबान resolv.conf अपडेट हो जाता है और आप अपनी इच्छानुसार किसी भी dns का उपयोग कर सकते हैं

पुनश्च: यदि आप नेटवर्क में कस्टम डीएनएस नहीं उठा सकते हैं तो चिंता न करें। हम भी नहीं कर सकते थे। यदि आप एक ASE वातावरण का उपयोग कर रहे हैं, तो रीसेट करने की आवश्यकता हो सकती है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.