




























使用consul做服务发现需要服务将ip、端口注册到consul中,规模较小的微服务可以通过配置来维护,但是一旦规模过大或者需要动态扩容时固定的ip、端口就无法使用了。
可以通过registrator这个服务来自动监控docker中的容器,将识别到的ip和端口注册到consul中,这样就可以自适应扩容后的微服务了。
sudo docker network create consul-net
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
# 注意标签是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查看容器的端口情况

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。