Docker Consul 服务 ip 广告为内部 docker ip

Cib*_*o99 6 docker consul

我正在 docker(官方 Consul 镜像)中运行 Consul,并且我有一个向 consul 注册的服务。服务注册,但 consul 在轮询其 DNS 服务时报告的 IP 是用于联系 Consul 代理的内部 docker IP。

dig @localhost -p 8600 address-norm.service.consul 

;; QUESTION SECTION:
;address-norm.service.consul.   IN      A

;; ANSWER SECTION:
address-norm.service.consul. 0  IN      A       172.17.0.3
Run Code Online (Sandbox Code Playgroud)

而不是172.17.0.3我希望领事将服务 IP 更改为领事主机 IP,因为该服务隐藏在该主机上,仅公开其所需的端口。我没有使用Registrator,我公开的服务已Spring Cloud Consul集成 api。


编辑:

这是我用来在 Docker 中启动 consul 的命令,我当前的解决方案是一个 python 脚本,它使用 HTTP API 并提取 IP 地址和端口。

 docker run -d --name consul --net=host consul agent -server -bootstrap \
   -node docker -ui -client=0.0.0.0 -bind=$NET_IP -advertise=$NET_IP
Run Code Online (Sandbox Code Playgroud)

Net_IP只是运行docker的主机的本地网络IP