我构建了两个使用 docker 网络相互通信的 docker 应用程序,但是当我尝试使用 nomad 运行这些应用程序时。nomad 中的问题是容器名称不可配置,并为容器提供随机名称。所以我不能将这些容器添加到 docker 网络中,并让它们通过它们的特定名称相互认识。
那么如何使用nomad在同一个docker网络中运行两个或多个docker容器呢?
我知道很少有方法。第一个只与游牧民族合作,其他人假设领事也被部署。
-
将两个容器放在同一个任务组中。Nomad将始终将它们定位在同一节点上,您可以通过Nomad env变量
NOMAD_IP_<label>
,NOMAD_PORT_<label>
或NOMAD_ADDR_<label>
访问地址。
在领 事服务注册表中使用 nomad
service
节注册服务器应用程序(docker 容器)。然后,您可以在"客户端"应用程序中使用 nomadtemplate
节来呈现配置。示例/文档在这里。在部署中设置领事连接(服务网格)。
您可以使用领事 DNS 接口。Consul可以用作DNS服务器,每个服务都可以在
<service_name>.service.<dc>.consul
(doc)解析。但是您必须将服务器配置为使用领事 DNS(文档)。
方法 1 是最简单的,但具有巨大的局限性(同一节点)。方法 2 对我有用好几年。Nomad非常智能,如果服务器IP/端口发生变化,它将重新加载/重新启动您的客户端IP。