关于Overlay网络的实际宿主机的端口问题

来源:8-7 swarm的overlay网络详解

慕函数2082699

2021-09-12

在Overlay网络中,每个Container都由Overlay网络分配一个IP,实际通信的时候还是要通过宿主机的eth0网卡,我想知道假设我把Container内的8080端口对外暴露,那么在宿主机上8080端口映射到具体哪个端口?

这个问题,其实我是想知道一个具体实际的场景,假设现在是一个RPC场景,有一个ProviderA,一个ConsumerB,一个注册中心Zookeeper,那么以下问题:

1、ProvierA在向Zookeeper注册时,IP用的是Overlay的IP,那端口用的容器内的端口,还是宿主机中映射的端口?
2、假设现在有一个ProviderA,那的端口映射8080:8080,同时ProviderB,也是将8080:8080映射到宿主机上,那理论上两个不能映射到同一个端口,但是在Swarm或者k8s的集群服务编排时,其实具体Provider在哪台宿主机上是随机的,那么这么避免这种端口冲突?(还是说Overlay有其他的容器与宿主机的端口映射方式,希望能讲解一下)

谢谢

写回答

1回答

麦兜搞IT

2021-09-13

您好,最好的方法就是亲自做实验验证。绑定宿主机的端口目的是为了让外界访问的到,而不是内部container之间通信的需求。其实可以通过compose来理解,两个处于同一网络的容器,他们之间的container IP是互通,端口也自然能够访问,并不需要做端口映射到宿主机。

0
3
另类钞人
回复
mamafeng
我也遇到这种问题了,请问您那边有解决方法么?
2024-01-27
共3条回复

Docker 系统性入门+进阶实践

Docker 完整知识体系及使用指南&优质实践

1953 学习 · 329 问题

查看课程