生成随机不重叠的docker绑定端口

时间:2017-02-02 15:26:47

标签: java random docker port

我正在尝试从我的REST服务方法中创建和启动容器。我的REST服务驻留在Unix机器上,来自外部系统的多个请求使用我的REST服务在机器中配置和启动多个docker容器,该服务也驻留在同一台机器上。

我的问题是如何确定我可以启动容器的端口。我的REST方法的每个请求都应该在未在先前请求中使用的唯一端口上启动容器。如果我生成一个随机端口号,那么我需要一些方法来确保不重新生成相同的数字,否则会产生端口冲突。

我需要每次生成一个随机端口号,不重复,将使用过的端口列表存储在某处并在每次生成随机数时检查列表以确保端口未被使用,在容器时释放端口停止(更新" ports-in-use"列表以删除已停止的容器)。关于如何在Java中实现这一点的任何想法?提前致谢

1 个答案:

答案 0 :(得分:1)

为什么要将端口分配随机化?

只需要在您的机器上使用一系列端口(比方说28000到28900)

调用REST服务时,您只需要检查哪个是该范围的第一个可用端口并使用它。

为什么在容易的时候会让它变得困难? ^^

如果你真的需要随意忽略已经采用的端口,那么你可以检查这个线程: Generate random numbers except certain values