Docker 如何承载65536个以上的服务,每个服务都需要一个不同的端口?

Docker 如何承载65536个以上的服务,每个服务都需要一个不同的端口?,docker,networking,deployment,sdn,Docker,Networking,Deployment,Sdn,我想托管web服务(比如一个简单的NodeJSAPI服务) 由于主机上可用的端口数只有65536个,因此我可以在单个主机上承载的服务数量受到限制 我可以考虑使用一个仅在主机内可见的虚拟子网,然后使用一个位于主机上的代理服务器,将API路由到适当的web服务 如果每个服务都部署在一个容器中,代理服务器将API路由到适当的容器中,那么dockers是否可以做到这一点 是否有现成的解决方案(最好是免费的)。首先,我怀疑您能否在每台主机上运行65536个进程,除非它非常庞大。无论如何,由于可用性和性能,

我想托管web服务(比如一个简单的NodeJSAPI服务)

由于主机上可用的端口数只有65536个,因此我可以在单个主机上承载的服务数量受到限制

我可以考虑使用一个仅在主机内可见的
虚拟子网
,然后使用一个位于主机上的
代理服务器
,将API路由到适当的web服务

如果每个服务都部署在一个容器中,代理服务器将API路由到适当的容器中,那么dockers是否可以做到这一点


是否有现成的解决方案(最好是免费的)。

首先,我怀疑您能否在每台主机上运行65536个进程,除非它非常庞大。无论如何,由于可用性和性能,我不建议这样做。太多的进程将争夺相同的资源,导致大量的上下文切换。也就是说,这是可行的

如果您的服务是HTTP,则可以使用反向代理,如nginx或。如果没有,您可以使用TCP服务。Traefik是一个更好的选项,因为它执行服务发现,所以您不需要手动配置端点


在此设置中,网络应为
网桥
,这是Docker中的默认设置。每个容器都有自己的IP地址,因此在端口耗尽方面不会有任何问题。

您可以创建另一个具有新IP和所有可用端口的虚拟机。。。您还可以使用unix套接字(unix://),而不是http://service-mappingI。我不想创建多个VM