我想虚拟化和复制我在 Qt 上用 C++ 开发的应用程序(带有 Qt 5.9.1 的 Windows)。该应用程序已经开发完成,我想复制 20 次。
注意:应用程序的每个实例都需要有不同的 IP 地址,因为我的应用程序使用网络工作。
我考虑过使用 openVz 或 Docker。虚拟化和复制应用程序的最佳方式是什么?
我想虚拟化和复制我在 Qt 上用 C++ 开发的应用程序(带有 Qt 5.9.1 的 Windows)。该应用程序已经开发完成,我想复制 20 次。
注意:应用程序的每个实例都需要有不同的 IP 地址,因为我的应用程序使用网络工作。
我考虑过使用 openVz 或 Docker。虚拟化和复制应用程序的最佳方式是什么?
你不需要这些工具。
要做的第一件事是删除人为的“1 个应用程序”限制。默认情况下,Windows 允许同一运行程序的多个实例,所以你做了一些事情来阻止它。停止这样做。
接下来要做的是为机器分配 20 个 IP 地址。这完全符合您的要求。
最后,您需要bind
一个特定的 IP 地址而不是0.0.0.0
. 枚举所有可用的接口,并以随机顺序尝试它们。(效率——如果你以相同的顺序尝试它们,所有 20 个实例都会尝试获取第一个 IP,其中 19 个会失败。第二次尝试时,18 个会失败。随机化意味着大多数实例会通过几次尝试绑定) .
您可以编写一个 bat/vb 脚本,该脚本将在 docker 中运行您的应用程序 20 个循环,自定义网络设置类似于docker network create
您需要该命令fork()
来创建具有不同 pid 的新实例。
一个很好的例子:C++ 中的 fork()