2017-06-08 7 views
0

私は2つのドッカーコンテナ "restorecms_facade_1"(ファサードサービス)と "restorecms_identity_1"(アイデンティティサービス)を同じブリッジ "restorecms_default"上で実行しています。ドッキングステーションを使用して2つのドッキングコンテナ間を接続

私はのようにホスト名を指定している:ファサードのサービスは5000ポートが露出している私のドッキングウィンドウのコンファイル

におけるアイデンティティサービスイメージのための「ホスト名のID-SRV」を、それは私のgraphQL要求を受け付けます。 このファサードサービスは、ポート50051で実行されているアイデンティティサービス(DNS名「identity-srv」)に要求を委任しますが、要求は現在ファサードサービスでタイムアウトしています。

私のドッカーのコンテナと花嫁のネットワークの詳細は次のとおりです。

ファサードサービスからアイデンティティサービスにpingすることはできません(ただし、逆も可能です)。

ここに何か不足していますか、または接続がアイデンティティサービスに移行するようにファサードサービスに何かを追加する必要がありますか?

ドッカーのPS:

[email protected] /restore $ docker ps 
CONTAINER ID  IMAGE        COMMAND     CREATED    STATUS     PORTS            NAMES 
4a8854ce4876  xxx/facade-srv   "node lib/index.js"  41 minutes ago  Up 41 minutes    0.0.0.0:5000->5000/tcp        restorecms_facade_1 
00f1f00ae2a6  xxx/identity-srv  "node service.js"  41 minutes ago  Up 41 minutes (healthy) 0.0.0.0:50051->50051/tcp        restorecms_identity_1 

ドッカー検査:

[email protected] /restore/identity-srv-TypeScript $ docker inspect restorecms_default 
[ 
    { 
     "Name": "restorecms_default", 
     "Id": "102358eab67884f7d39b78fd0bcf1050499d3dc667eddab5e15086633185837d", 
     "Created": "2017-06-08T10:40:59.672964582+02:00", 
     "Scope": "local", 
     "Driver": "bridge", 
     "EnableIPv6": false, 
     "IPAM": { 
      "Driver": "default", 
      "Options": null, 
      "Config": [ 
       { 
        "Subnet": "172.18.0.0/16", 
        "Gateway": "172.18.0.1" 
       } 
      ] 
     }, 
     "Internal": false, 
     "Attachable": true, 
     "Ingress": false, 
     "Containers": { 
      "00f1f00ae2a64f489a530a63a9fb57711618d5e67769b739db514b5f20b73d36": { 
       "Name": "restorecms_identity_1", 
       "EndpointID": "d005cdff65479817bf769e4b60a18769c40d9d9cae396f3c735c2e497d6e08a4", 
       "MacAddress": "02:42:ac:12:00:09", 
       "IPv4Address": "172.18.0.9/16", 
       "IPv6Address": "" 
      }, 
      "4a8854ce487698149072c224378f697e9309e32649f6010d2d8c4cc4f0bb3f42": { 
       "Name": "restorecms_facade_1", 
       "EndpointID": "2509c8e1444d27cbe8a3188412fcbfb1aab103ec2366c22f3ad614c684ef87ab", 
       "MacAddress": "02:42:ac:12:00:0a", 
       "IPv4Address": "172.18.0.10/16", 
       "IPv6Address": "" 
      } 
     }, 
     "Options": {}, 
     "Labels": { 
      "com.docker.compose.network": "default", 
      "com.docker.compose.project": "restorecms" 
     } 
    } 
] 

ホスト名およびping:

[email protected]:/# cat /etc/hostname 
identity-srv 

[email protected]:/# ping 4a8854ce4876 
PING 4a8854ce4876 (172.18.0.10): 48 data bytes 
56 bytes from 172.18.0.10: icmp_seq=0 ttl=64 time=0.241 ms 
56 bytes from 172.18.0.10: icmp_seq=1 ttl=64 time=0.149 ms 
56 bytes from 172.18.0.10: icmp_seq=2 ttl=64 time=0.165 ms 
^C--- 4a8854ce4876 ping statistics --- 
3 packets transmitted, 3 packets received, 0% packet loss 
round-trip min/avg/max/stddev = 0.149/0.185/0.241/0.040 ms 


[email protected]:/# cat /etc/hostname 
4a8854ce4876 

[email protected]:/# ping identity-srv 
ping: unknown host 

私の現在のドッキングウィンドウ-compose.yml(アイデンティティとファサードのサービスのための)設定次のとおりです。

identity: 
    hostname: identity-srv 
    image: xxx/identity-srv 
    ports: 
     - "50051:50051" 
    depends_on: 
     arangodb: 
     condition: service_healthy 
    links: 
     - arangodb 
     - kafka 
    healthcheck: 
     test: "exit 0" 

    # Facade service 
    facade: 
    image: xxx/facade-srv 
    ports: 
     - "5000:5000" 
    depends_on: 
     identity: 
     condition: service_healthy 
     #resource: 
     # condition: service_healthy 
    links: 
     - identity 
     - kafka 
     - elasticsearch 
     - arangodb 
     - redis 

答えて

0

ホスト名はコンテナ内のホスト名のみを設定します。別のものからpingする場合は、linksセクションで使用したエイリアス(デフォルトのサービス名)を使用する必要があります。

ping identity あなたは、リンクをこのように使用することができますidentity-srv使用したい場合: ... links: - identity:identity-srv ...

+0

それは働いた、ありがとうございます。 – user2608576

1

links are legacyを。現代の方法は、あなたの作成ファイルの最上位にバージョン2があることを確認することでした(最新のスキーマバージョンは3.6ですが、この例では2にしておきます)。その後、カスタムブリッジネットワーク上のすべてのコンテナは常に保持されますDNS内にあり、そのネットワーク上で互いにアクセスできます。 Dockerは、各仮想ネットワークにプライベートDNSサーバーを提供し、同じドッカーネットワーク上のコンテナの名前解決にhostsファイルを使用しなくなりました。

サービス名はデフォルトのDNS名なので、明示的なホスト名のキー/値ではないので、同じものにするのが最も簡単です。

これは動作するはずです。あなたはfacadeおよびその逆からidentityにpingを実行できるようになります:

version: '2' 
services: 
    identity: 
    image: xxx/identity-srv 
    ports: 
     - "50051:50051" 
    depends_on: 
     arangodb: 
     condition: service_healthy 
    healthcheck: 
     test: "exit 0" 

    facade: 
    image: xxx/facade-srv 
    ports: 
     - "5000:5000" 
    depends_on: 
     identity: 
     condition: service_healthy 
関連する問題