Docker到VMnetworking

我们一直在将系统的一部分迁移到更多以微服务为导向的架构。 为了运行这个,我们select运行它们作为docker容器。 目前我们的架构如下:

a)几个Web服务器,托pipe仍然庞大的PHP应用程序

b)3个新的虚拟机,将运行

  • “提醒”微服务
  • 一个mongo数据库实例
  • 自定义微服务registry(基于redis)

所以,我的问题如下:

我们目前的基础设施都在10.0.0.0/24范围内。 Docker在172.x.1.x范围内创build实例。 我如何让Web服务器(运行于10.0.0.0/24 )连接到在“registry”上注册的服务,例如172.17.1.3 (例如)?

我读过很多扩展,比如swarm,compose等。但是这些似乎并不能解决networking问题。

你可能会说:“你已经在警报服务上暴露了相关的端口,只是连接到这个虚拟机的IP地址”,但问题是,当服务(即Docker容器内的NodeJS应用程序)启动时,它会注册其暴露的端口与服务“registry”。 registry使用请求的IP地址来build立一种path。 所以服务启动,并在“registry”中注册为172.17.1.5:3001 。 如果这是唯一的方法,是否没有办法获得服务的主机 IP地址?

有什么build议么? 希望这是有道理的!

谢谢你的帮助!

registry使用请求的IP地址来build立一种path。 所以服务启动,并在“registry”中注册为172.17.1.5:3001。 如果这是唯一的方法,是否没有办法获得服务的主机IP地址?

如果这些容器运行在同一台主机上(运行一个docker守护进程),则不需要registry,因为所有容器都通过一个通用的dockernetworking相互通信( docker-compose默认在其版本2中创build )

如果这些容器运行在不同的主机上(每个主机都运行自己的docker守护进程),则需要多一个键值存储,以便跨VM虚拟机启用Docker容器可见性,从而允许您通过主机将容器名称parsing为正确的IP。
请参阅“ 如何使Docker容器可通过IP访问其他networking计算机? ”和本教程 。

http://i.stack.imgur.com/ahLaf.png

这可能会取代你的redisregistry。