2017-01-18 13 views
6

का उपयोग कर डॉकर-कंपोज़र कंटेनर मैं 2.9 (एक yml संस्करण 2.1 में) के साथ "कस्टम" पुल नेटवर्क में अपने "उबंटू 16.10 सर्वर" पर कई कंटेनर चला रहा हूं। मेरे अधिकांश कंटेनर आंतरिक रूप से एक ही पोर्ट का उपयोग कर रहे हैं, इसलिए मेरे लिए "होस्ट" नेटवर्क ड्राइवर का उपयोग करने का कोई तरीका नहीं है। समर्पित links विशेषता का उपयोग करके मेरे कंटेनर सभी लिंक एक साथ हैं।मेजबान DNS सर्वर

लेकिन, मुझे अपने कंटेनरों के बाहर उजागर सेवाओं तक पहुंचने की भी आवश्यकता है। इन सेवाओं में मेरी कंपनी के DNS सर्वर में पंजीकृत नामों के साथ समर्पित यूआरएल है। जबकि मुझे सार्वजनिक DNS का उपयोग करने और मेरे कंटेनरों के भीतर से किसी भी सार्वजनिक सेवा तक पहुंचने में कोई समस्या नहीं है, मैं बस अपने निजी DNS तक नहीं पहुंच सकता।

कृपया, क्या आप एक कंटेनर से निजी DNS का उपयोग करने के लिए एक समाधान समाधान जानते हैं? या इससे भी बेहतर, होस्ट के नेटवर्क DNS कॉन्फ़िगरेशन का उपयोग करें?

पीएस: बेशक, मैं अपनी डॉकर-compose.yml फ़ाइल में extra_hosts विशेषता का उपयोग करके मेरी कंपनी की सेवाओं से लिंक कर सकता हूं। लेकिन ... यह निश्चित रूप से एक DNS होने का लक्ष्य नहीं है। मैं अपनी सभी सेवाओं को अपनी वाईएमएल फ़ाइल में पंजीकृत नहीं करना चाहता हूं, और जब भी मेरी कंपनी में सेवाओं के आईपी अपडेट होते हैं, तो मैं इसे अपडेट नहीं करना चाहता हूं।

प्रसंग:

  • मेजबान: उबंटू 16.10 सर्वर
  • डोकर इंजन: 1.12.6
  • डोकर लिखें: 1.9.0
  • डोकर-compose.yml: 2.1
  • नेटवर्क: अपने पुल।

डोकर-compose.yml फ़ाइल (उद्धरण):

version: '2.1' 
    services: 
    nexus: 
    image: sonatype/nexus3:$NEXUS_VERSION 
    container_name: nexus 
    restart: always 
    hostname: nexus.$URL 
    ports: 
     - "$NEXUS_81:8081" 
     - "$NEXUS_443:8443" 
    extra_hosts: 
     - "repos.private.network:192.168.200.200" 
    dns: 
     - 192.168.3.7 
     - 192.168.111.1 
     - 192.168.10.5 
     - 192.168.10.15 
    volumes_from: 
     - nexus-data 
    networks: 
     - pic 

    networks: 
    pic: 
     driver: bridge 
     ipam: 
     driver: default 
     config: 
      - subnet: 172.18.0.0/16 
      gateway: 172.18.0.1 

मैं के साथ और pic नेटवर्क के लिए ipam विन्यास के बिना की कोशिश की, किसी भी भाग्य के बिना। ठीक से docker exec -ti nexus curl repos.private.network रिटर्न

docker exec -ti nexus curl another-service.private.network रिटर्न curl: (6) Could not resolve host: another-service.private.network; Name or service not known जबकि curl another-service.private.network मेजबान से उचित HTML पृष्ठ रिटर्न इस सेवा से सेवा HTML पृष्ठ:

टेस्ट & परिणाम।

और "निश्चित रूप से" another-service.private.network मेरे 4 DNS सर्वर (1 9 2.168.3.7, 1 9 .168.111.1, 1 9 2.168.10.5, 1 9 2.168.10.15) में जाना जाता है।

चीयर्स, ओलिवियर।

उत्तर

3

आप निर्दिष्ट नहीं करते कि आप कौन सा वातावरण चला रहे हैं जैसे मैक, विंडोज या यूनिक्स में डॉकर-कंपोज़ चल रहा है, इसलिए यह कुछ बदलावों पर निर्भर करेगा। आप यह भी निर्दिष्ट नहीं करते हैं कि क्या आप उपयोगकर्ता द्वारा निर्मित ब्रिज नेटवर्क पर डॉकर में डिफ़ॉल्ट पुल नेटवर्क का उपयोग कर रहे हैं।

किसी भी मामले में, डिफ़ॉल्ट रूप से, डॉकर को आपके कंटेनर में डॉकर होस्ट से DNS रिज़ॉल्यूशन को आजमाने और मानचित्रित करना चाहिए।तो यदि आपका डॉकर होस्ट निजी DNS पते को हल कर सकता है, तो सिद्धांत में आपके कंटेनर भी सक्षम हो सकते हैं।

मैं इस आधिकारिक डॉकर DNS दस्तावेज़ को पढ़ने की अनुशंसा करता हूं क्योंकि यह काफी उचित है। उपयोगकर्ता बनाया ब्रिज नेटवर्क के लिए डिफ़ॉल्ट डॉकर ब्रिज नेटवर्क के लिए Here

यदि आप विंडोज़ के लिए डॉकर, मैकर, डॉकर मशीन या डॉकर का उपयोग कर चल रहे हैं तो आपको थोड़ा सा गचाचा है, आपको याद रखना होगा कि आपका डॉकर होस्ट वास्तव में आपके मशीन पर चल रहा वीएम है, न कि भौतिक बॉक्स, इसलिए आपको आवश्यकता है यह सुनिश्चित करने के लिए कि वीएम में सही DNS रिज़ॉल्यूशन विकल्प सेट हैं। आपको उनके कंटेनरों को उनके द्वारा उठाए जाने वाले DNS रिज़ॉल्यूशन में परिवर्तनों के लिए पुनरारंभ करना होगा।

आप docker-compose का उपयोग कर सभी डिफ़ॉल्ट सेटिंग्स को ओवरराइड कर सकते हैं।

version: 2 
services: 
application: 
    dns: 
    - 8.8.8.8 
    - 4.4.4.4 
    - 192.168.9.45 

आप उन सुविधाओं here के लिए दस्तावेज़ मिल जाएगा: यह स्पष्ट रूप से डीएनएस सर्वर, डीएनएस खोज विकल्प आदि की स्थापना एक उदाहरण के रूप के लिए पूर्ण विकल्प है।

+0

हाय @ रोब, आपके उत्तर के लिए धन्यवाद। मैं अपने मूल पोस्ट को संपादित कर रहा हूं ताकि मेरे conf (विवरण के साथ उबंटू 16.10 सर्वर पर चल रहा हो) के बारे में विवरण जोड़ सकें। – Olivier

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