some about registrator questions
This project is maintained by wangfakang
在使用Regastrator过程中遇到的问题:
Registrator是一个可以监听通过docker启动服务,并且可以自动注册和注销该服务。并且目前支持
Consul, etcd and SkyDNS2相关服务注册组件。
我在使用的过程中是使用的cosnul
.
(1).当通过docker启动registrator 时, 给registrator的启动参数-internal=0(default)此时registrator注册 的服务的ip都是该registrator的容器的ip.
(2).当通过docker启动registrator 时,给定docker指定网络参数--net=host,此时会注册到consul上服务的ip全部 都是127.0.1.1,原因是由于使用了host模式和本机使用相同的ip和port(处于同一个network空间)。
(3).要想registrator注册到consul上的服务的ip是每一个服务容器的ip,则可以指定registrator的执行参数 -internal=1.此时注册到cosnul上的服务的ip就是每每一个服务容器的ip,注意并且此时注册服务的port也不再 是启动时给的映射port,而是其容器服务暴露的端口.
(4).如果我们想利用conusl+registrator+docker+consul_template来动态管理nginx则可以这样设计: consul_templaye + regsitrator应该和要上线的服务打包到需要部署的机器上,而且此时使用--net=host 网络模式启动docker上的registrator,此时只需要启动服务的时候进行端口的映射就好了。 方案二:当然也可以这样玩,给定registrator使用-internal=1,然后注意通过docker启动的服务一定要暴露相关 服务的端口.
(5).当docker使用默认网络模式,则port是指定的映射端口。 映射端口和docker的网络模式是没有关系 的(registrator的网络模式)。但是当registrator使用了internal=1 的时候则此时所注册的服务的端口默认是80.当启动服务时-p 88:8000 则会在consul注册两个服务, 一个是80一个是8000.
有可能是在该dockerfile中没有暴露了端口(EXPOSE 80 ) 而且本身有一个服务是8000端口。而且初步猜测registrator会检测所有暴露的端口认为就是有可用的服务。
而且当使用-p 88:99是会出现88端口这个服务,看了下docker文档(建议看一下EXPOSE和-p以及-P他们之间的区别),使用-p的时候会执行暴露端口以及做端口映射。
所有发布了的端口(-p或-P)都会暴露,但是暴露了的端口(EXPOSE)不一定会发布。
在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流