2016-02-18 23 views
6

Docker konteynerlerinde çalışan birkaç hizmetim var ve bunların önünde bir nginx sunucusu var, aynı docker ağı içindeki tüm kaplar. Docker 1.10'dan önce bir dnsmasq konteyneri yarattım ve nginx set çözümleyicisinin içinde hizmetlerim nginx'ten keşfedilebilir.Nginx, docker'daki katıştırılmış DNS'den ana bilgisayara erişemiyor. 1.10.1

Ancak, docker 1.10.1'e yükselttikten sonra dnsmasq görüntüsü çalışmaz. Bazı araştırmalardan sonra, 127.0.0.11 adresindeki yeni "gömülü dns" i kullanmaya çalıştım (bunun yerine docker ağında kullanmanın doğru yolu olduğunu düşünüyorum). Nginx konteynerinden servis konteynerine ping atabiliyorum, ancak nginx could not be resolved (3: Host not found) geri göndermeye devam et. -

# 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) 

Ping

çalışır (aynı kodu ı nginx var olduğu ilk IP adresi ve ardından bulunamadı host):

Ve sonra ben çok kafa karıştırıcı sonucu aldığım, host komutunu kullanmaya çalıştı

liman işçisi-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 

ardından benim yapılandırmaları basitleştirilmiş bir sürümüdür kap İşte

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

içinde

version: '2' 

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

nginx.conf da ana bilgisayardan ayrıntılı bir sonuç:

# 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 

My liman işçisi versiyonu

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 

kimse neyin yanlış giderse beni anlamaya yardımcı olabilir ? Ya da bu konuya nasıl girilir?

cevap

9

Bu liman işçisi DNS sunucusu IPv6 yapmaz çünkü, ancak 1.5.8 itibariyle hem IPv6 ve IPv4 için nginx çözümleyici sorguları: http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver

Sen nginx içinde çözümleyici hattında kolayca yeterince ipv6 devre dışı bırakabilir (Yukarıdaki bağlantıya bakın, sadece ipv6 = kapalı) ve sonra sizin için çalışmaya başlamalıdır.

+0

Teşekkür ederim @phobologic, çekicilikte çalıştı – waterscar

+0

OMG! Şu an saatlerce bu sorun üzerinde sıkışmış oldum, benim nginx config (nginx için oldukça yeni oldum) olduğunu düşündüm, ama aslında onu @phobologic olarak çözdünüz. Yardım ettiğin için teşekkür ederim! – nschoe

+1

Motor 1.11 sürümü, şimdi ipv6 desteği içerir. Blog duyurularına bakın: https://blog.docker.com/2016/04/docker-engine-1-11-runc/ – Subfuzion

İlgili konular