我们一直在将部分系统迁移到更加以微服务为导向的架构。为了运行它,我们选择将它们作为docker容器运行。我们目前的架构如下:
a)几个Web服务器,托管仍然单片的PHP应用程序
b)3个新的VM,它们将运行
所以,我的问题如下:
我们目前的基础设施都在10.0.0.0/24范围内。 Docker会在172.x.1.x
范围内旋转实例。如何让Web服务器(在10.0.0.0/24
上运行)连接到使用"注册表"注册的服务,该服务位于172.17.1.3
(例如)?
我已经阅读了很多扩展程序,例如swarm,compose等。但是那些似乎并没有解决网络问题。
您可能会说"您已经公开了警报服务上的相关端口,只需连接到该VM的IP地址",但问题是该服务时(即docker容器内的NodeJS应用程序启动,它将其暴露的端口注册到服务" registry"。注册表使用请求的IP地址来构建一种路径。因此,服务启动,并在"注册表中注册"为172.17.1.5:3001
。如果这是唯一的方法,是否有办法获得服务' 主机 IP地址?
有什么建议吗?希望这是有道理的!
感谢您的帮助!
答案 0 :(得分:0)
注册表使用请求的IP地址来构建一种路径。因此,服务启动,并在"注册表中注册"如172.17.1.5:3001。如果这是唯一的方法,是否有办法获得服务'主机IP地址?
如果这些容器在同一主机上运行(运行一个docker守护程序),则您不需要注册表,因为所有容器都通过公共docker网络(其版本中docker-compose
creates by default)相互看到2)
如果这些容器在不同的主机上运行(每个主机都运行自己的docker守护程序),则需要多一个键值存储,以便在VM之间启用docker容器可见性,允许您将容器名称解析为其右侧ip主持人。
见" How to make Docker container accessible to other network machines through IP?"和this tutorial。
这可能会取代您的redis注册表。