【发布时间】:2020-05-25 12:17:37
【问题描述】:
您好,我有一个问题。
我使用 docker compose ver3 和 consul image 作为容器,在我的主机上我有一个简单的服务应该响应 http 请求,它设置在端口 40001 上。所以现在我想让 docker 向这个服务发送请求作为通过 http 进行的健康检查(换句话说,将请求从 docker 容器发送到在主机上运行的服务)。
我的 docker compose for consul 很简单:
version: '3'
services:
consul:
image: consul:latest
command: consul agent -dev -log-level=warning -ui -client=0.0.0.0
hostname: consul
container_name: consul
ports:
- 8500:8500
- 8600:8600/udp
- 40000-41000:40000-41000
所以我启动了这个容器,主机上的服务在其中注册,主机上的服务的 http 健康检查地址是“http://localhost:40005//Health”。请求的间隔大约是 15 秒,所以我希望这样的请求到达服务并且服务将响应 200。
我还可以访问容器中领事的 UI。
主机上的服务不会注册任何传入请求,但有趣的是,当我运行独立 consul 时它工作正常(即我正在接受健康检查)。
所以我的问题是,这可能是容器无法与主机上的服务通信的问题。
【问题讨论】: