Docker的容器通讯使用Consul

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

你能向我解释一下,我怎么能运行两个docker集装箱,从第二个使用Consul的第一个容器主机识别并发送一些消息给它?

您需要在每个Docker容器内以客户端模式运行Consul Agent 。 每个Docker容器都需要一个Consul服务定义文件,让Agent知道把它的服务通告给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服务器HTTP APIfindRedis服务

 dig @localhost -p 8500 redis.service.consul curl $CONSUL_SERVER/v1/health/service/redis?passing