docker consul registrator 服务自动注册consul 微服务动态扩容
背景
使用consul做服务发现需要服务将ip、端口注册到consul中,规模较小的微服务可以通过配置来维护,但是一旦规模过大或者需要动态扩容时固定的ip、端口就无法使用了。
可以通过registrator这个服务来自动监控docker中的容器,将识别到的ip和端口注册到consul中,这样就可以自适应扩容后的微服务了。
network
sudo docker network create consul-net
consul
sudo docker run -d \
--name consul \
--network consul-net \
-p 8500:8500 \
consul:latest agent -server -bootstrap-expect=1 -ui -client=0.0.0.0
registrator
# 注意标签是master不是latest
sudo docker pull gliderlabs/registrator:master
sudo docker run -d \
--name registrator \
--network consul-net \
--volume=/var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator:master \
-internal consul://consul:8500
# 可以指定绑定的ip而不是使用internal局域网模式
sudo docker run -d \
--name registrator \
--network consul-net \
--volume=/var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator:master \
-internal=false -ip=192.168.1.1 consul://consul:8500
测试服务
sudo docker run -d \
--name my-web-app \
--network consul-net \
-p 8080:80 \
--label "SERVICE_NAME=my-web-service" \
--label "SERVICE_TAGS=web,production" \
nginx:alpine
# 可以让docker自动分配随机端口
# 只指定容器内的80端口,或直接-P(大写的P) 不带额外的参数将所有端口都暴露出来并随机分配
sudo docker run -d \
--name my-web-app \
--network consul-net \
-p 80 \
--label "SERVICE_NAME=my-web-service" \
--label "SERVICE_TAGS=web,production" \
nginx:alpine
sudo docker run -d \
--name my-web-app \
--network consul-net \
-P \
--label "SERVICE_NAME=my-web-service" \
--label "SERVICE_TAGS=web,production" \
nginx:alpine
备注
可以通过docker port查看容器的端口情况

留待后查,同时方便他人
联系我:ivesbao@163.com
联系我:ivesbao@163.com

浙公网安备 33010602011771号