Docker在Consul TCP健康检查周期中重用端口

例子:

时刻1:Docker运行容器A监听32781(导出端口) – > 8000(服务端口)通过TCP连接完成领事健康检查(周期10s)。

时刻2:Docker重启集装箱A并在closures时间运行集装箱B(less于10秒)。 现在端口32781是容器B(重用端口),新的容器A有另一个端口。

但下一轮领事健康检查后,港口32781就可以了,领事馆拿A箱就可以了。

如何解决这个问题?

在我看来,你必须注销一项服务,这是对容器重新启动的健康检查。 领事API提供了这样的机会,你只需要在你的微服务中使用它。 如何正确地使它工作,取决于你的服务的build立方式。 否则,领事决不会确定一些服务是用另一个端口重新启动的。