【发布时间】:2018-10-20 10:26:53
【问题描述】:
我正在运行一个小型 Docker Swarm,它运行一个具有 2 个副本的服务。 在该服务中,该服务的“task-1”需要与同一服务的“task-2”通信,但我没有找到实现此目的的方法
首先,我想避免将服务设置为主机网络模式,因为这样将它放入 swarm 就没有什么意义了。
其次,我发现您可以在docker-compose.yml 文件中设置一个包含TaskName 的环境变量,我使用docker stack deply ... 部署到群中:
environment:
- NODENAME={{.Node.Hostname}}
- NODEID={{.Node.ID}}
- SERVICEID={{.Service.ID}}
- SERVICENAME={{.Service.Name}}
- TASKID={{.Task.ID}}
- TASKNAME={{.Task.Name}}
您可以从各种容器 ping $TASKNAME。但它是不可发现的,因为名称 TASKNAME=e2foobar_yada.gq7ygzvp114q2x3t99lasuowc.e6ncft2k14g9o2u4blvhns19 包含在您重新启动服务时会发生变化的 ID。
我可以设置别名还是有什么方法可以让我进行任务通信?
【问题讨论】:
标签: docker docker-swarm service-discovery