Docker swarm 中可以运行多少个服务?

问题描述 投票:0回答:1

我在 Docker swarm 环境中运行非常轻量级的 Docker 镜像。为此,我将随机端口转发到容器内的目标端口。这是一个示例输出:

y0xxxjj8kvi3   foo-test-1 1/1   strm/helloworld-http:latest  *:30001->80/tcp
37f4czmipex0   foo-test-2 1/1   strm/helloworld-http:latest  *:30002->80/tcp
qmzjlxt95n8r   foo-test-3 1/1   strm/helloworld-http:latest  *:30003->80/tcp
...

如您所见,我部署的服务越多,使用的端口就越多。这是否意味着服务数量受到网络堆栈可用端口数量的限制?还有其他更适合的网络模式吗?

目前路由是由 Docker 群路由完成的,但我准备了一个负载均衡器,可以直接使用容器的虚拟 IP 地址将调用转发到容器,但我不确定这是否可以解决问题。哪种网络模式最适合这个?

谢谢!

编辑:我知道考虑到其局限性,Kubernetes 可能更适合这里,但我仍然很好奇用 Docker swarm 来解决这个问题。

docker docker-swarm docker-swarm-mode
1个回答
0
投票

理论上每个 IP 地址有 65,535 个端口,但这与 Docker Swarm 无关。

由于您使用 Swarm 作为编排引擎,因此您可以启动其他节点并使用

docker swarm join
让它们加入 Swarm。然后您将有更多可用端口。

但是,您提出这个问题的方式确实引发了有关您的预期用例的问题。我通常只向外部客户端公开少量端口(例如,用于 Web 应用程序的 80 和 443,用于 postgres 的 5432 等)。例如,我可能会使用群体网络来做一些简单的负载平衡。例如,对于 Web 应用程序,我可以运行 nginx 或其他反向代理并将请求转发到“内部”网络;在这种情况下,永远不要将端口暴露给公共网络。

© www.soinside.com 2019 - 2024. All rights reserved.