我有一个Java程序,它模拟我自己制作的协议。它绑定到运行它的机器上的给定IP地址和端口号。我想在具有多个网卡的同一台机器上运行该程序的多个实例。这可能是使用Docker(一位同事向我建议这个但对它不太了解)?我的另一个计划是在具有桥接接口的机器上运行多个VM,但我觉得与使用Docker相比,这是浪费资源(基于我已经阅读过的内容,仍然很难掌握这个想法)。 / p>
执行后,程序在后台运行,就像守护进程等待消息/数据包一样,可以通过终止进程来停止。
答案 0 :(得分:0)
正如一些评论者所指出的那样,你没有理由不能将你的程序的多个实例作为系统上的容器运行,就像你可以在容器之外也可以这样做(假设你有多个容器)可用于绑定服务端口的IP地址。)
问题可能更多是设计问题。您希望如何分发发往Java服务应用程序的流量?如果您确实需要每个物理IP地址一个,那么您可以使用--network=host
运行容器并直接将您的应用程序绑定到特定IP,可能带有一些指令/标志以将该实例定向到特定IP。默认情况下,Docker将在您的系统上创建一个桥接网络,容器将以专用网络IP启动,并且在主机端口上暴露每个容器将最多为该容器的port binding configuration。显然,可以使用iptables
或某种更高级别的前端代理来根据需要对从多个物理网络地址到容器网络的流量进行任何自定义路由。