2016-06-15 20 views
1

これはXYの問題かもしれないと思うので、私はこの問題を解決する最善の方法を知らないので質問の文脈を含めます。docker-compose内でDNSコンテナを設定するにはどうすればよいですか?

AWSにkubernetes環境を設定して、nginxコンテナとバックエンドサービス(SvcAと呼ぶ)の2つの部分を持つようにしました。バックエンドサービスは行ったり来たり、私のnginxの設定で、私はのようなものを持つことができるので:

resolver kube-dns.kube-system.svc.cluster.local valid=60s ipv6=off; 

server { 
    # stuff 
    location/{ 
     set $backend "SvcA.default.svc.cluster.local:8000"; 
     proxy_pass http://$backend; 
    } 
} 

このセットアップはkubernetesでうまく動作しますが、私は方法がアップで(ほぼ)完全に同じセットを持っていたいですテスト/開発用の私のローカルマシンですが、kubernetesを使用するオーバーヘッドはありません。私がしたいことは、これらの2つのコンテナ(nginx、SvcA)をドッカー作成ファイルに貼り付け、それをそのように動作させることです。私が実行した問題は、nginxのリゾルバがkubernetesのURLになるようにハードコードされていることです。私が思っている解決策はDNSをコンテナにすることです。それは唯一のエントリです。 SvcA.default.svc.cluster.local "をdocker-compose assignsという名前に変更します。

これが問題を解決する最善の方法であるかどうかは不明です。問題がある場合は、これを設定するにはDNSの設定について十分に分かりません。これは私の問題に対する最良の解決策ですか、もしそうなら、これを処理するためにDNSサーバをどのように設定するのですか?

答えて

1

私はあなたがDNSを必要とするかどうかわからないです。

あなたはURLがハードコードされている場合でも、このような何かを行うことができます 例えばドッキングウィンドウ-compose.ymlあなたがそれぞれ容器等のためにも、セットのホスト名は、あなたも、それらの間のリンクを作ることができることができ

version: '2' 
services: 
    service1: 
    ... 
    networks: 
    back-tier: 
     ipv4_address: "172.16.238.10" 
    service2: 
    ... 
    networks: 
     back-tier: 
     ipv4_adress: "172.16.238.11" 
networks: 
    back-tier: 
    driver: bridge 
    ipam: 
     driver: default 
     config: 
     - subnet: 172.16.238.0/24 
     gateway: 172.16.238.1 

。循環する必要がある場合は、extra_hostsパラメーターを使用して行うことができます。コンテナが同じネットワーク上にある場合、彼らは私がおそらくあるだろう知っていたお互い

+0

と話をすることができるはず https://docs.docker.com/compose/compose-file/

あなたがここの上に必要なすべての情報を見つけることができるかどう

より簡単な方法です。それが私にその道の大部分をもたらします。 「127.0.0.11」が常に内部ネームサーバのIPであるかどうか知っていますか? (私は、nginxの設定でリゾルバのための "extra_hosts"エントリを作成する必要があり、私はどのように内部DNSのIPを設定するためのドキュメントを見つけることができません) – Richard

+0

私はあなたがドッカーの作成.yml https://docs.docker.com/v1.11/compose/compose-file/#dns –

関連する問題