我试图创造这样的东西:
服务器容器每个都暴露了端口8080,并接受来自客户端的请求,但至关重要的是,它们 允许彼此通信。
这里的问题是服务器容器是在客户端容器之后启动的,所以我不能像过去那样将容器链接标志传递给客户端,因为容器它&#39 ; s应该链接到还没有存在。
我一直在关注较新的Docker网络,但我无法使用网桥,因为我不希望服务器交叉通信成为可能。在我看来,每个服务器的一个桥接器不能很好地扩展,并且很难在客户端容器内进行管理。
是否有某种类似开关的docker结构可以做到这一点?
答案 0 :(得分:1)
您似乎需要创建多个网桥,每个容器一个。为了简化这一点,您可能希望使用docker-compose
来指定应如何配置网络和容器,并让docker-compose
工具正确连接它。
还有一个注意事项:我认为所有网络都可以访问公开的端口。如果这是正确的,您可以将所有服务器网络设置为无,并依靠暴露的端口来访问服务器。
答案 1 :(得分:0)
希望这与您的用例相关 - 我正在尝试从图表和注释中绘制关于您的实际应用程序的上下文。我建议你去服务发现路线。它可能涉及中央商店(比如Redis或SkyDNS)的一些简单API,但从长远来看会使事情变得简单。
例如,Kubernetes使用SkyDNS通过DNS进行此操作。在一天结束时,您选择的任何编排工具很可能会开箱即用:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dns这个想法很简单:
server-<<ISO Timestamp of Server Creation>>
s 奖金编辑:我刚刚意识到你可以使用更简单的类似Redis的设置来执行此操作,并且DNS可能只是过度工程:)