2017-12-13 13 views
0

自分で作ったプロトコルをシミュレートするJavaプログラムがあります。これは、実行中のマシン上の特定のIPアドレスとポート番号にバインドします。私は複数のネットワークカードを持つ同じマシン上でこのプログラムの複数のインスタンスを実行するために探しています。これはDockerを使用して可能ですか(同僚はこれを私に提案しましたが、それについてはあまり知らないのですか?私の他の計画は、マシン上で複数のVMをブリッジインターフェイスで実行することでしたが、これは代わりにDockerを使用するのに比べてリソースの無駄だと感じています(私はそれについて読んだことに基づいています。Dockerの同じプログラムの複数のインスタンス

実行すると、プログラムは、メッセージ/パケットを待っているデーモンなどのバックグラウンドで実行され、プロセスを殺すことによって停止することができます。

+1

これは、Javaアプリケーションを異なるローカルアドレスにバインドするだけで*ドッカーなしでも可能です。あらゆる種類のコンテナ化/仮想化の必要はありません。だから確かに、あなたもDockerでそれを行うことができます。 – larsks

+1

質問がある場合:これはDockerで実現できますか?はい、可能です。 – Jesse

答えて

0

いくつかのコメンターが指摘したように、あなただけのようにも、あなたはおそらく、あなたが複数のIPを持っている与えられた(だけでなく、容器の外にそれを行うこととして、システム上のコンテナとしてあなたのプログラムの複数のインスタンスを実行することができない理由はありませんサービスポートのバインドに使用できるアドレス)。

質問はおそらく、設計のより一つです。どのようにして、Javaサービスアプリケーション向けのトラフィックをどのように配信したいのですか?実際に物理IPアドレスごとに1つを使用する場合は、--network=hostでコンテナを実行し、特定のIPにアプリケーションを直接バインドすることができます。デフォルトでは、Dockerはシステムにブリッジネットワークを作成し、コンテナはプライベートネットワークIPで始まり、ホストポート上の各ポートを公開することはそのコンテナのport binding configurationまでです。明らかにiptablesまたは何らかの上位レベルのフロントプロキシを使用して、複数の物理ネットワークアドレスから必要に応じてコンテナネットワークへのトラフィックのカスタムルーティングを行うことができます。

関連する問題