Docker和Consul示例:需要澄清

时间:2016-04-21 10:05:43

标签: docker consul

我正在与领事学习Docker-Swarm并发现了一些我不太了解的问题。基本上,我使用Consul Sevice Discovery创建了一个Docker-Swarm集群(node-01和node-02)。然后我运行一个多容器应用程序(带有Mongo的Express应用程序),我可以看到它在node-02上运行。为了运行它,我必须进入并找到我的node-02的IP地址,然后打开浏览器。

它工作正常,只是我希望我可以去一些虚拟IP(或DNS),然后Consul服务(或Swarm)将其转换为node-02的正确IP地址这个例子。

下一项是当我登录Consul web UI时,我希望看到“节点”菜单下的节点,但似乎并非如此。我还期望得到我在node-01和node-02上运行的'应用程序'或'服务'的概述,但事实并非如此。

我的问题是:

  1. 有人可以解释为什么我需要手动找出我的应用正在运行的群集中的哪个节点。无法想象这是在更大的部署中完成的。
  2. 有人可以解释为什么我在Consul UI中看不到'节点'和'服务'吗?
  3. 注意:虽然我已经在博客文章(带屏幕截图)中记录完整设置,但我试图尽可能地缩短那些想要查看更多细节的人。 Go to blog post

2 个答案:

答案 0 :(得分:2)

问题1

  

我想访问该服务而无需使用Swarm代理的IP地址

解决方案

这是可行的,您只需要在容器(reverse proxy)中启动{em> nginx ,例如here are the official nginx images。在启动此容器时,使用带有应用程序名称的选项--link。因此,此容器的IP地址将添加到反向代理容器的文件/etc/hosts中(请记住使用--name--hostname)。在特定节点上运行此反向代理容器。 因此摆脱IP地址问题的解决方案是在特定节点上部署另一个容器(然后是特定的IP地址)?是的!但是使用--link将使此问题可扩展;)

问题2

  

我原本希望看到节点下的节点'菜单,但似乎不是这样。

你的意思是什么?你有什么期望?您需要查询k,v-storage DB吗?

答案 1 :(得分:1)