Docker使用Consul进行容器通信

时间:2015-03-02 20:04:48

标签: docker consul

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

你能解释一下,我怎样才能运行两个docker容器,使用Consul从第一个容器主机中识别出来并向它发送一些消息?

1 个答案:

答案 0 :(得分:3)

您需要在每个Docker容器内以客户端模式运行Consul Agent。每个Docker Container都需要一个Consul Service Definition文件,让代理知道将其服务广告给Consul Server。

他们看起来像这样:

{
  "service": {
    "name": "redis",
    "tags": ["master"],
    "address": "127.0.0.1",
    "port": 8000,
    "checks": [
      {
        "script": "/usr/local/bin/check_redis.py",
        "interval": "10s"
      }
    ]
  }
}

Service Health Check来监控服务的健康状况。像这样:

{
  "check": {
    "id": "redis",
    "name": "Redis",
    "script": "/usr/local/bin/check_redis_ping_returns_pong.sh",
    "interval": "10s"
  }
}

在另一个Docker Container中,您的代码将通过DNS或Consul Servers HTTP API找到Redis服务

dig @localhost -p 8500 redis.service.consul

curl $CONSUL_SERVER/v1/health/service/redis?passing