Docker到VM网络

时间:2016-04-05 06:37:34

标签: networking docker

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

a)几个Web服务器,托管仍然单片的PHP应用程序

b)3个新的VM,它们将运行

  • 警告"微服务
  • mongo数据库实例
  • 自定义微服务注册表(基于redis)

所以,我的问题如下:

我们目前的基础设施都在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地址?

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

感谢您的帮助!

1 个答案:

答案 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

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

这可能会取代您的redis注册表。