2016-09-09 12 views
0

同じネットワーク内に複数のドッキング・コンテナがあります。私は、container01のcurlを使ってtest01.dockerコンテナのAPIから結果を取得しようとしています。ドッキング・コンテナ:コンテナ間のカールが機能しない

私は、コンテナAに、このコマンドを実行します。

curl -s test-01.docker:8031/app?status -v 

次のように出力されている:

* Hostname was NOT found in DNS cache 
* Trying 172.19.0.24... 
* connect to 172.19.0.24 port 8031 failed: Connection refused 
* Failed to connect to test-01.docker port 8031: Connection refused 
* Closing connection 0 

私は、次のコマンドを使用してcontainerAからのping test01.dockerにしようとすると:

ping test-01.docker 

成功です。

ドッカーpsを実行すると、次の情報が表示されます。私の中で

43823212be7e  mytestimage  "/docker-entrypoint.s" 53 seconds ago  Up 47 seconds  22/tcp, 2812/tcp, 5060-5061/tcp, 6970-6971/tcp, 8002/tcp, 8030-8031/tcp, 8033/tcp, 8071/tcp, 8888/tcp, 9020-9023/tcp containerA 

これは、ポート8031が公開されていることを示しています。私はカールがなぜこれで失敗しているのか理解できません。私はテスト01.dockerで以下のコマンドを実行すると、それは私に正しい出力を与える:

curl -s localhost:8031/app?status 

その同じネットワーク内の他のコンテナから働いていない理由はわかりません。私が何かを逃しているかどうか教えてください。

アップデート:私のドッキングウィンドウ-コンファイルは次のようになります。

version: '2' 

    services: 
    test-01.docker: 
     image: ############## 
     expose: 
     - 22 
     - 2812 
     - 8031 
     hostname: test-01 
     domainname: docker 
+0

を試してみてください、あなたの内部ドッカーネットワーク。ポート8031は、ドッカーコンテナが互いに通信するために使用するインタフェースとは異なるインタフェースを介して、ホストマシンに公開されます。 – ffledgling

+0

Dockerfiles/docker-compose.ymlを共有できますか? – johnharris85

+0

@ffledglingドッカーコンテナで使用されているのと同じインタフェースを介して、ポート8031をホストマシンに公開するにはどうすればよいですか? –

答えて

0

どんなことでアクセスすることはできませんので、テスト01.docker内で実行されているアプリは、127.0.0.1に聞くようなことに思えますこのコンテナ

外の他のプログラムは、(テスト-01.docker内側)にアプリを聞かせ0.0.0.0アドレスをリッスンし、ドッキングウィンドウコンテナがあるという理由だけで、実際には上のポート8031でリッスンしていない* *再び

+0

あなたは正しいです。これが問題です。 127.0.0.1の代わりに0.0.0.0で聞くにはどうしたらいいですか? –

+0

ドッカーについてのビジネスではない、私はあなたにどのように伝える前に、アプリが何であるかを知る必要があると思う – Choldrim

関連する問題