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

我正在尝试从我的REST服务方法中创build并启动一个容器。 我的REST服务驻留在Unix机器上,并且会有多个来自外部系统的请求,使用同一台机器上的REST服务来configuration和启动机器中的多个Docker容器。

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

我需要每次产生一个随机的端口号,不重复的,把使用的端口列表存储在某个地方,每次产生一个随机数时检查一下列表,以确保端口没有被使用,当容器停止时释放端口更新“使用中的端口”列表以删除已停止的容器)。 任何想法如何在Java中完成这一点? 提前致谢

你为什么要随机分配端口?

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

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

为什么你会很容易做到这一点? ^^

如果你真的需要随机忽略已经采取的端口,那么你可以检查这个线程: 生成除了某些值的随机数