2016-02-18 10 views
6

मेरे पास डॉकर कंटेनर में चल रही कई सेवाएं हैं, और उनके सामने एक nginx सर्वर, एक ही डॉकर नेटवर्क के सभी कंटेनर हैं। डॉकर 1.10 से पहले मैंने एक dnsmasq कंटेनर बनाया और nginx सेट रिज़ॉल्वर के भीतर ताकि मेरी सेवाओं को nginx से खोजा जा सके।Nginx को डॉकर में एम्बेडेड DNS से ​​होस्ट नहीं मिलता है 1.10.1

लेकिन डॉकर 1.10.1 में अपग्रेड करने के बाद, dnsmasq छवि काम नहीं करती है। कुछ शोध के बाद, मैंने पते 127.0.0.11 से नए "एम्बेडेड डीएनएस" का उपयोग करने की कोशिश की (जो मुझे लगता है कि डॉकर नेटवर्क के भीतर उपयोग करने का सही तरीका होना चाहिए)। हालांकि मैं nginx कंटेनर से सेवा कंटेनर पर पिंग कर सकता हूं, लेकिन nginx could not be resolved (3: Host not found) वापस भेजता रहता है।

और फिर मैं मेजबान आदेश का उपयोग करने की कोशिश की, मैं बहुत भ्रमित परिणाम मिला: (प्रथम आईपी पते, और फिर नहीं मिला होस्ट - एक ही कोड के रूप में मैं nginx से मिल गया)

# host service-ui 
service-ui has address 172.18.0.7 
Host service-ui not found: 3(NXDOMAIN) 
Host service-ui not found: 3(NXDOMAIN) 

पिंग काम करता है

डोकर-compose.yml

:
/# ping service-ui 
PING service-ui (172.18.0.7): 56 data bytes 
64 bytes from 172.18.0.7: icmp_seq=0 ttl=64 time=1.123 ms 
64 bytes from 172.18.0.7: icmp_seq=1 ttl=64 time=0.131 ms 
64 bytes from 172.18.0.7: icmp_seq=2 ttl=64 time=0.178 ms 

के बाद मेरी विन्यास की एक सरलीकृत संस्करण है

version: '2' 

services: 
    nginx: 
    build: . 
    ports: 
     - 80:80 
    service-ui: 
    image: service-ui 
networks: 
    default: 
    external: 
     name: ssx 

कंटेनर

location ~ /([a-z]*)/ { 
    resolver 127.0.0.11; 
    proxy_pass http://$1-ui:9000$uri$is_args$args; 
} 

यहाँ भीतर nginx.conf भी मेजबान से विस्तृत परिणाम है:

# host -v service-ui 
Trying "service-ui" 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55237 
;; flags: qr rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 

;; QUESTION SECTION: 
;service-ui.   IN A 

;; ANSWER SECTION: 
service-ui.  1800 IN A 172.18.0.7 

Received 52 bytes from 127.0.0.11#53 in 1 ms 
Trying "service-ui" 
Host service-ui not found: 3(NXDOMAIN) 
Received 102 bytes from 127.0.0.11#53 in 1 ms 
Received 102 bytes from 127.0.0.11#53 in 1 ms 
Trying "service-ui" 
Host service-ui not found: 3(NXDOMAIN) 
Received 102 bytes from 127.0.0.11#53 in 1 ms 
Received 102 bytes from 127.0.0.11#53 in 1 ms 

मेरे डोकर संस्करण

Client: 
Version:  1.10.1 
API version: 1.22 
Go version: go1.5.3 
Git commit: 9e83765 
Built:  Thu Feb 11 19:27:08 2016 
OS/Arch:  linux/amd64 

Server: 
Version:  1.10.1 
API version: 1.22 
Go version: go1.5.3 
Git commit: 9e83765 
Built:  Thu Feb 11 19:27:08 2016 
OS/Arch:  linux/amd64 

किसी को भी मदद कर सकते हैं मुझे यह पता लगाने की क्या गलत हो जाता है ? या इस मुद्दे में कैसे खोदना है?

उत्तर

9

इसका कारण यह है डोकर DNS सर्वर IPv6 ऐसा नहीं करता है, लेकिन दोनों IPv6 और 1.5.8 के रूप में आईपीवी 4 के लिए nginx समाधानकर्ता प्रश्नों: http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver

आप nginx में समाधानकर्ता लाइन पर आसानी से पर्याप्त IPv6 निष्क्रिय कर सकते हैं (उपरोक्त लिंक देखें, यह सिर्फ ipv6 = off है) और फिर इसे आपके लिए काम करना शुरू कर देना चाहिए।

+0

धन्यवाद @phobologic, एक आकर्षण – waterscar

+0

ओएमजी के रूप में काम किया! मैं घंटों के लिए इस समस्या पर फंस गया हूं, सोचा था कि यह मेरी nginx कॉन्फ़िगरेशन थी (मैं nginx के लिए बिल्कुल नया हूँ) लेकिन वास्तव में आप इसे @phobologic हल किया। आपकी सहायताके लिए धन्यवाद! – nschoe

+1

इंजन 1.11 रिलीज में आईपीवी 6 के लिए समर्थन शामिल है। ब्लॉग घोषणा देखें: https://blog.docker.com/2016/04/docker-engine-1-11-runc/ – Subfuzion

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