Registrator analyze
This project is maintained by wangfakang
registrator源码的简单分析:
registrator是用来检测docker容器启动的服务以及所暴露的端口,然后把其注册到第三方存储系统,如ETCD.Consul.SKYDNS等.
其实说白了registrator就是监听docker的sock event,由于有新的docker容器启动的时候都会与docker-daemondocker进行通信. 然后就是利用这一点来进行获取相关信息.
其实可以通过监听的事件然后得到新启动容器的id,然后调用docker api (docker inspect id类似)来获取更多容器中相关信息
(如:暴露的端口启动服务的ip等等).
然后相应的容器服务的信息就到手了,此时再根据用户选择的第三方存储系统(ETCD.Consul.SKYDNS)组织成相应的数据进行调用第
三方的rest api进行相应的注册.
在源码目录中是这样的:
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特性.
在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流