2016-04-06 14 views
0

2つのドッキング・コンテナー - 監視アプリケーションを実行し、もう1つがサービスを実行していて、どちらもnet = hostで同じネットワーク・ネームスペースで実行しています。 (Mesosはこのパラメータですべてのジョブを実行します。)ドッキング・コンテナーのプロセスで使用される照会ポート番号

サービスはランダムなポートにバインドできます。 監視コンテナから、どのポートにサービスがバインドされているかを照会するにはどうすればよいですか。

私は/ proc/net/tcpの読み込みを試みましたが、それは非常に複雑なようです。それを行う簡単な方法はありますか?このため

+0

'ドッキングウィンドウを参照してください、私は事前にコンテナIDを知っているだろうcontainer_id' –

+0

を点検します。私はモニタリングコンテナの中にドッカーソケットをマウントしており、ドッカーAPIを使用してそれを問い合わせることができます。公開されたポート番号を照会しようとしましたが、ポート番号はnet = hostで実行されていないコンテナにしか公開されません。 – krish7919

+0

あなたはどの環境にいるのかを明確にすることはできますか?あなたはMesosクラスターを使っているようですね?もしそうなら、下記のようにリンクを使用しないでください。 –

答えて

-2

使用link

docker run --name myService service 

docker run --link myService monitoring 

詳細あなたは私が正しく理解していればhttps://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/

+0

彼らは他の方法のラウンドを開始するかどうか?意味、監視はmyServiceより前に開始されますか? – krish7919

+1

これは悪い考えです。 Dockerではリンクが推奨されていませんが、Mesosの設定に入る方法は間違いありません。 –

1

ので、サービスはランダムなポートにバインドここに見つけることができますか?もしそうなら、なぜその場合ですか?私はこれが理想とはかけ離れていると思います。コンテナ内で使用する場合は、特定のポートにビンを使用するすべてのサービスです。

たとえば、環境変数で定義されたポートにバインドするアプリケーション(Marathon経由で起動)がある場合は、コンテナを起動するときにこの環境変数を設定し、BRIDGEDネットワークモードを使用して、ポート範囲からのポート。

Mesos DNSをインストールすると、アプリケーション名からIP /ポートの組み合わせを判断できます。例えば。マラソンのアプリ名が、testappの場合、サービス名はtestapp.marathon.mesosになります。

+0

mesosがホストネットワーキングモードを強制するため、ブリッジモードを選択できません。ランダムなポートを使用するようにアプリケーションを再設計し、同じマシン上で複数のサービスインスタンスを実行できるようにしました。これでサービス発見は失敗します。ホストネットワーキングモードでは、サービスがどのポートにバインドされるかを事前に知る方法がないため、検出が失敗します。オーロラを使用して解決策を見つけようとしています。オーロラが処理できないと確信しています。それ、私はもっと探検します。どんな提案も大歓迎です。 :) – krish7919

+1

私は残念なことに、オーロラについて何も知らない。我々は、スケジューラとしてMarathonでCoreOSクラスタを使用しており、すべてのアプリケーションはDockerコンテナとして実行されています。ブリッジネットワークは私たちのためにうまく機能します。なぜあなたはホストネットワーキングだけが動作するのを見ますか?これはオーロラの問題ですか? – Tobi

+0

"ドッキング・イメージを実行しているときに、ドッキング・イメージを実行者として簡単に実行できるようにするため、現在はデフォルトでホスト・ネットワークになっています。 投稿者:http://mesos.apache.org/documentation/latest/docker-containerizer/ 私は、マラソン+メゾスがどのようにブリッジネットワーキングを行い、オーロラとメゾスがそうでないかに驚いています。オーロラのドッカーコンテナを走らせるときに-net = bridgedを与えるのと同じくらい簡単ですか? – krish7919

関連する問題