2016-02-18 6 views
6

ドッカーのコンテナで複数のサービスが実行され、その前に1台のnginxサーバーがあり、すべてのコンテナが同じドッカーネットワーク内にあります。ドッカー1.10の前に、dnsmasqコンテナを作成し、nginx内にリゾルバを設定して、nginxからサービスを発見できるようにしました。Nginxはdocker 1.10.1の埋め込みDNSからホストを取得しません

しかし、ドッカー1.10.1にアップグレードした後、dnsmasqイメージは機能しません。いくつかの調査の後、127.0.0.11のアドレスから新しい埋め込みDNSを使用しようとしました(これはドッカーネットワーク内で使用する正しい方法だと思います)。私はnginxのコンテナからサービスコンテナにpingすることができますが、nginxはcould not be resolved (3: Host not found)を送り返し続けます。

そして私は、私は非常に混乱の結果を得た、ホストコマンドを使用しようとしました:(最初のIPアドレス、および見つからないホスト - 私は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) 

のPingが

の作品

ドッキングウィンドウ-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 

以下は、私の構成の簡易版であります

# 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 

誰も私が間違って行くかを把握するのに役立ちます。コンテナ

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

version: '2' 

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

nginx.confはここで、ホストからの詳細な結果です?またはこの問題を掘り起こす方法は?

答えて

9

これは、ドッキングウィンドウのDNSサーバがIPv6をしないためであるが、1.5.8のようにIPv6とIPv4の両方のためのnginxのリゾルバクエリ:http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver

あなたはnginxのレゾルバライン上で簡単に十分なIPv6を無効にすることができます(上記のリンクを参照してください、それはちょうどipv6 = offです)、それからあなたのために働き始めるべきです。

+0

ありがとうございました@魔法のように、魔法のように働いた – waterscar

+0

OMG!私はこの問題に数時間悩まされていた、それは私のnginx設定(私はかなりnginxに新しいです)だと思ったが、実際にはそれを@phobologicで解決しました。ご協力いただきありがとうございます! – nschoe

+1

エンジン1.11リリースには、現在ipv6のサポートが含まれています。ブログのお知らせをご覧ください:https://blog.docker.com/2016/04/docker-engine-1-11-runc/ – Subfuzion

関連する問題