安装registrator
下载镜像
这里必须要注意:registrator的lastest版本已经2年没更新了,他的最新主板本是master,一定要注意,因为旧的版本无法发现跟自己不是同一个网络的容器
docker pull docker.io/gliderlabs/registrator:master #启动镜像 docker run -d --name=registrator --net=host -v /var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator:master consul://127.0.0.1:8500
这里consul需要读取docker socket信息,所以需要映射docker.sock路径
a. consul的api地址最好填写和registrator在一台机器上的consul地址,因为如果你填了远端的IP,则在consul端口显示你的服务地址为远端+本地端口,这个也是consul设计问题或者说是BUG
b. 如果consul api地址填了远端的,并且注册成功,然后因为一些原因改成本地的,重新注册,就会出现一个服务重复注册的情况,造成这个情况的原因是service的key与serviceid无关,所在集群中会造成服务的重复情况(坑爹),所以切记consul地址一定要填本地,安全起见,全部写成127.0.0.1。以及在启动容器的时候添加-e SERVICE_ID参数,指定service id,然后在注册前做判断。如果出现重复情况,可以尝试清空出现数据异常的consul节点的data目录。