Docker Swarm Mode中容器多网络多IP registrator注册服务IP的问题

问题描述

在这篇文章《Docker Swarm Mode中部署SpringCloud微服务》之后

遇到了点新问题。

在运行时指定自己网络的时候,容器里面多个网络,多个IP,但是注册的不是固定注册某个网卡的IP作为服务IP。

这就导致有时候注册的IP不是属于overlay网络的IP。服务访问就会出现问题。

如果是用rencher部署的话,它有一个label记录了容器IP。可以用registrator-useIpFromLabel读取它label。而docker swarm并没有记录相关IP到label 也就不能用这个参数。

所以我fork了registrator的最新源码,做了点修改。让它支持可以传入在运行docker时,attach的network名字,根据这个网络名字在它container信息中取得它IP。

如我前面运行docker的服务的时候指定--network=micro-service

那么我运行registrator的时候,用我修改过的镜像doubleshit/registrator:v7指定-useIpFromNetworkName=micro-service参数即可。

如:

docker run -d \
    --restart=always \
    --name=registrator \
    --net=host \
    --volume=/var/run/docker.sock:/tmp/docker.sock \
    doubleshit/registrator:v7 \
    -cleanup \
    -internal \
    -ip <NODE_IP> \
    -useIpFromNetworkName=micro-service \
      consul://<NODE_IP>:8500

修改后的源码:https://github.com/onecer/registrator

commit的时候信息network写成了netword无视就好 哈哈

贴这个博客纯粹是因为比较容易让遇到问题的同志在搜索的时候比较容易找到。但是有时候后期文章做了改动 我不一定会更新这里。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值