週末にdocker's IRCでこの質問をしましたが、答えを熟考する前に立ち去らなければなりませんでした:
コンテナ内で多数のアプリケーションを実行している場合 (ここでは、それらがすべて同じ物理ハードウェア上で実行されていると仮定しますが、そうである必要はありません)、それぞれがそれぞれを見つけられるようにしたいと考えています。その他は自動的に。
ある種のレジストリ ( etcdや DNS-SD/Bonjour など) を使用して、サービスと関連する詳細をアナウンスし、他のアプリケーションにそれらを見つけて、それに応じてトラフィックをルーティングさせることができます。
ここでの問題は、アプリケーションはコンテナー内でサービスを提供しているホスト名/ポートを認識できますが、これはアクセス可能なポートまたはアドレスである必要はないということです。結合する必要がある 2 つの情報があります。
- サービスにアクセスできる場所。コンテナの外からアクセス可能
- サービスの機能 (バージョン番号、サービスの種類); コンテナ内からアクセス可能
コンテナの壁を越えてこの情報を取得する方法を教えてください。
- TCP 経由で docker をコンテナーに公開することで、アプリはその表示場所を照会できますが、これは関心の分離に違反しているようです。
- アナウンスの準備のためにコンテナが開始された後、ホスト システムが照会するファイル/ポートをコンテナで開くことができますが、これは WSDL を再発明しているように感じます。
この問題をどのように解決すべきかについての考えやガイダンスはありますか?