单机跑多个container实例,如何让这些实例都能使用同一端口?


使用场景:产品线需要在一个node上跑多个container实例(实例个数不定,是动态的),这些实例也都使用同样的端口。
问题:nat、host模式均不能满足。
想到的解决方案:给node实现动态加vif。

除了上面的这种方案,还有其它可行的方案吗?优缺点?
已邀请:

william - cSphere CEO

赞同来自: DockOne xiaolunsanguo hisen_huawei


这些container是跑同一个业务吗?如果是我理解是负载均衡的需求,可考虑nginx+lua,redis保存upstream。容器创建销毁动态更新redis数据库。这样通过lb对外就是一个port

如果不是负载均衡的需求,那么为每个容器分配一个单独的ip,这样使用相同的端口就不冲突了。网桥+dhcp或者网络虚拟化,如果是网络虚拟化,需要考虑容器的ip/port被谁访问的问题。

要回复问题请先登录注册