Service registry bridge for Docker with pluggable adapters
Branch: master
Clone or download
Pull request Compare This branch is 6 commits ahead of gliderlabs:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bridge
consul
consulkv
docs
etcd
skydns2
zookeeper
.dockerignore
.gitignore
CHANGELOG.md
Dockerfile
Dockerfile.dev
Gopkg.lock
Gopkg.toml
ISSUE_TEMPLATE.md
LICENSE
Makefile
README.md
SPONSORS
VERSION
circle.yml
mkdocs.yml
modules.go
registrator.go

README.md

Registrator

问题描述

在这篇文章《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

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

增加-forceServiceIp 可以强制使用指定IP,比如在docker swarm中,我可以强制指定为指定的IP,这样就不会变为集群内部网络的IP,在开发环境使用可以方便开发在本地远程调用consul中的服务.

Service registry bridge for Docker.

Circle CI Docker pulls IRC Channel

Registrator automatically registers and deregisters services for any Docker container by inspecting containers as they come online. Registrator supports pluggable service registries, which currently includes Consul, etcd and SkyDNS 2.

Full documentation available at http://gliderlabs.com/registrator

Getting Registrator

Get the latest release, master, or any version of Registrator via Docker Hub:

$ docker pull gliderlabs/registrator:latest

Latest tag always points to the latest release. There is also a :master tag and version tags to pin to specific releases.

Using Registrator

The quickest way to see Registrator in action is our Quickstart tutorial. Otherwise, jump to the Run Reference in the User Guide. Typically, running Registrator looks like this:

$ docker run -d \
    --name=registrator \
    --net=host \
    --volume=/var/run/docker.sock:/tmp/docker.sock \
    gliderlabs/registrator:latest \
      consul://localhost:8500

CLI Options

Usage of /bin/registrator:
  /bin/registrator [options] <registry URI>

  -cleanup=false: Remove dangling services
  -deregister="always": Deregister exited services "always" or "on-success"
  -internal=false: Use internal ports instead of published ones
  -ip="": IP for ports mapped to the host
  -resync=0: Frequency with which services are resynchronized
  -retry-attempts=0: Max retry attempts to establish a connection with the backend. Use -1 for infinite retries
  -retry-interval=2000: Interval (in millisecond) between retry-attempts.
  -tags="": Append tags for all registered services
  -ttl=0: TTL for services (default is no expiry)
  -ttl-refresh=0: Frequency with which service TTLs are refreshed

Contributing

Pull requests are welcome! We recommend getting feedback before starting by opening a GitHub issue or discussing in Slack.

Also check out our Developer Guide on Contributing Backends and Staging Releases.

Sponsors and Thanks

Big thanks to Weave for sponsoring, Michael Crosby for skydock, and the Consul mailing list for inspiration.

For a full list of sponsors, see SPONSORS.

License

MIT