ここで何が起こっているのか分かりません。 ホストのパブリックIP、パブリッシュされたポートを使用して、ホストを介して、1つのドッカーコンテナ内から別のドッカーコンテナへのHTTPリクエストを実行したいだけです。ホストから別のドッカーコンテナを1つカールすることができないのですが、
これは私の設定です。私は私の開発マシンを持っています。私は2つのコンテナを持つドッカーホストマシンを持っています。 CONT_Aはリッスンし、ポート上でWebサービスを公開する3000
DEV-MACHINE
HOST (Public IP = 111.222.333.444)
CONT_A (Publish 3000)
CONT_B
(完全に異なるマシン)何の問題もなく
私がカールすることができます
curl http://111.222.333.444:3000 --> OK
私がホストにSSHするとき
私はCONT_B
ない可能、ちょうどタイムアウト内で実行すると、私は、任意のproblesm
curl http://111.222.333.444:3000 --> OK
ずにカールすることができます。しかし、Pingは正常です...
docker exec -it CONT_B bash
$ curl http://111.222.333.444:3000 --> TIMEOUT
$ ping 111.222.333.444 --> OK
なぜですか?
のUbuntu 16.04、ドッカーの1.12.3(デフォルトのネットワーク設定)
私はこのことを考えているので、ドッカーは、iptablesの&ブリッジネットワークを使用してネットワークをどのように処理するかである可能性があります。私はそれを見なければならないが、あなたが与えているIPアドレスがおそらくドッカーネットワーク内で割り当てられた "内部IP"ではなく、ホストから見たIPアドレスであると推測している。原因のpingは、ドッキングホスト(コンテナではない)に解決されるため解決できる可能性があります。しかし、これを達成するドッカーの方法は、コンテナAにポートを公開するのではなく、オーバーレイネットワークをhttps://docs.docker.com/engine/userguide/networking/にすることです。 –
@RikNauta私が使用しているIPアドレスは** public host ip **です。確かにそれは内部のドッカーネットワークと何らかの形で矛盾しない限り、常に正しく解決されるべきです。これは '104 ...' IPアドレスです。 – pqvst
それはうまくいくはずです。ユーザーランドプロキシプロセスドッカーが実行され、ホスト上で待機し、tcp接続をコンテナに転送します。 Docker 1.11で同じことができますか?ドッカーデーモンで 'userland-proxy'がfalseに設定されていますか? – Matt