Docker4

Registrator analyze

This project is maintained by wangfakang

registrator源码的简单分析:

1.前面文章介绍了registrator是用来干啥的,在简单回顾一下.

registrator是用来检测docker容器启动的服务以及所暴露的端口,然后把其注册到第三方存储系统,如ETCD.Consul.SKYDNS等.

2.下面简单的说一下其registrator的原理:

其实说白了registrator就是监听docker的sock event,由于有新的docker容器启动的时候都会与docker-daemondocker进行通信.  然后就是利用这一点来进行获取相关信息.

  其实可以通过监听的事件然后得到新启动容器的id,然后调用docker api (docker inspect id类似)来获取更多容器中相关信息

 (如:暴露的端口启动服务的ip等等).
     然后相应的容器服务的信息就到手了,此时再根据用户选择的第三方存储系统(ETCD.Consul.SKYDNS)组织成相应的数据进行调用第  三方的rest api进行相应的注册.

3.registrator最值得学习的就是使用了一个设计模式(适配器/桥接模式)

在源码目录中是这样的:        
bridge        circle.yml  consulkv    Dockerfile.dev  etcd     Makefile    modules.go  registrator.go  SPONSORS
CHANGELOG.md  consul      Dockerfile  docs            LICENSE  mkdocs.yml  README.md   skydns2         VERSION

其中在bridge中就作为中间层,使得registrator不关心用户使用的第三方存储系统.
这一块主要设计到的go的interface特性.

欢迎一起交流学习

在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流

Thx

Author