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计算机? ”和本教程 。
这可能会取代你的redisregistry。
- Docker:无法在企业代理初始设置时获取最新的Boot2Docker ISO发行版本
- 在Docker构build中caching“去获取”
- git clone无法访问docker容器中的主机
- Docker Redsocks代理服务器在HTTP代理之后,没有互联网DNS
- 定义的Linux发行版中的哪些命令在Docker容器中可用?
- 将Google永久磁盘附加到Cloud SDK Docker容器
- 将生成文件夹复制到我的存储库
- 在Docker容器中创builddjango超级用户而不input密码
- 在Docker中运行openstack容器时,为什么会出现“Watchdog:BUG:Soft lockup CPU”错误。