我已经阅读了有关使用 Consul 的 Docker 服务发现的信息,但我无法理解。
您能否向我解释一下,我如何运行两个 docker 容器,使用 Consul 从第二个容器主机识别并发送一些消息?
您需要在每个 Docker 容器内以客户端模式运行Consul Agent。每个 Docker 容器都需要一个Consul 服务定义文件,让代理知道向 Consul 服务器宣传它的服务。
它们看起来像这样:
{
"service": {
"name": "redis",
"tags": ["master"],
"address": "127.0.0.1",
"port": 8000,
"checks": [
{
"script": "/usr/local/bin/check_redis.py",
"interval": "10s"
}
]
}
}
还有一个服务健康检查来监控服务的健康状况。像这样的东西:
{
"check": {
"id": "redis",
"name": "Redis",
"script": "/usr/local/bin/check_redis_ping_returns_pong.sh",
"interval": "10s"
}
}
在另一个 Docker 容器中,您的代码将通过 DNS 或 Consul Servers HTTP API 找到 Redis 服务
dig @localhost -p 8500 redis.service.consul
curl $CONSUL_SERVER/v1/health/service/redis?passing