2017-01-02 5 views
0

2つのコンテナ間で通信しようとしていますが、同じことをすることができません。 'server'という名前のサービスを、別のサービス 'endpoint'に依存するdocker composeに追加します。私は は、「サーバ」と「エンドポイント」のIPアドレスとポートを渡す必要がある、と私は、ホストのリストで「エンドポイント」を参照していない。しかし、今、私のDocker Compose V2ネットワークエラー

command: -userver -e endpoint:51393 

以下のように同じことをやっていますコマンドの下に使用して:ここで

docker-compose exec server cat /etc/hosts 

が出力されます。

127.0.0.1  localhost 
::1  localhost ip6-localhost ip6-loopback 
fe00::0 ip6-localnet 
ff00::0 ip6-mcastprefix 
ff02::1 ip6-allnodes 
ff02::2 ip6-allrouters 
172.21.0.3  49f4808fa677 

私の完全なドッキングウィンドウ-compose.ymlファイルは以下の通りです:

version: '2' 

services: 
    endpoint: 
    build: 
     context: . 
     dockerfile: Dockerfile 
    image: myimage_end:0.1 
    command: -uendpoint 
    ports: 
     - 51393:51393 
    networks: 
     - internal 

    server: 
    build: 
     context: . 
     dockerfile: Dockerfile 
    image: myimage_server:0.1 
    command: -userver -e endpoint:51393 
    ports: 
     - 51392:51392 
    depends_on: 
     - endpoint 
    networks: 
     - internal 
    volumes: 
     - /local_path/dataset:/dataset 

networks: 
    internal: 
    driver: bridge 

答えて

2

ドッカーの現在のバージョンを使用すると、かなり静的な設定なので、コンテナのホストファイルを操作することで、別のコンテナから1つのコンテナに到達することはなくなりました。

現在、ドッカーの作成では、同じネットワーク内のすべてのコンテナがサービス名で互いに見えるようにする、ある種のDNSサービスを使用しています。これにより、従属コンテナを停止/再開させることなく、従属コンテナを停止することができます。これが機能するには、depends_onも指定する必要はありません。これは、依存関係が再開されたときに依存するサービスの再起動をトリガーするためにのみ必要です。

詳細については、ネットワークについてのdocker-compose docsをご覧ください。あなたの状況をデバッグするための

一部のコマンド:詳細について

docker-compose exec server nslookup endpoint 

docker inspect <container_name_of_service> 
+0

おかげで、私はそれが今解決しました。歓声!! – ankitkamboj