1

我已经阅读了有关使用 Consul 的 Docker 服务发现的信息,但我无法理解。

您能否向我解释一下,我如何运行两个 docker 容器,使用 Consul 从第二个容器主机识别并发送一些消息?

4

1 回答 1

3

您需要在每个 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
于 2015-06-26T02:47:11.580 回答