docker - 使用Consul的Docker的容器通信

标签 docker consul

我已经阅读了有关使用Consul进行Docker服务发现的信息,但我听不懂。

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

最佳答案

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

他们看起来像这样:

{
  "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容器中,您的代码将通过DNS或Consul Servers HTTP API找到Redis服务
dig @localhost -p 8500 redis.service.consul

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

关于docker - 使用Consul的Docker的容器通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28818522/

相关文章:

docker - Geth 1.8.3,无法同步到rinkeby.io-卡在:IPC端点打开

consul - 领事可以支持大型键/值存储

ubuntu - 如何修复 `error starting agent failed to get advertise address multiple private ips found`

nginx - Docker - nginx 代理 - 访问容器之间的主机

javascript - 如何在多个 Docker 副本中仅运行一次计划代码?

java - 使用Spring云consul配置可以共享配置吗?

web-services - 使用 Consul 追踪所有 REST 端点

go - 两个客户端在 Consul 中获取相同的锁

linux - CentOS 在启动前禁用服务(docker)?

docker - 多个 docker-compose 项目之间的通信