如何将两个 docker 容器与 nomad 连接
Posted
技术标签:
【中文标题】如何将两个 docker 容器与 nomad 连接【英文标题】:how can I connect two docker containers with nomad 【发布时间】:2021-09-22 06:28:15 【问题描述】:我构建了两个使用 docker 网络相互通信的 docker 应用程序,但是当我尝试使用 nomad 运行这些应用程序时。 nomad 中的问题是容器名称不可配置并且给容器一个随机名称。因此,我无法将这些容器添加到 docker 网络并让它们通过特定名称相互认识。
那么如何使用 nomad 在同一个 docker 网络中运行两个或多个 docker 容器?
【问题讨论】:
我也遇到了同样的问题。到目前为止有什么解决方案吗? hostname 怎么样?你能分享一下你目前的工作定义吗? 【参考方案1】:我知道几种方法。第一个仅适用于 nomad,其他假设也部署了 consul。
将两个容器放在同一个任务组中。 Nomad 将始终将它们定位在同一个节点上,您可以通过 Nomad 环境变量 NOMAD_IP_<label>
、NOMAD_PORT_<label>
或 NOMAD_ADDR_<label>
访问地址。
使用 nomad service
stanza 在 consul 服务注册表中注册服务器应用程序(docker 容器)。然后,您可以在“客户端”应用程序中使用 nomad template
节来呈现配置。示例/文档是here。
在您的部署中设置 consul connect(服务网格)。
你可以使用 consul DNS 接口。 Consul 可以作为 DNS 服务器工作,每个服务都可以在 <service_name>.service.<dc>.consul
(doc) 解析。但是你必须配置你的服务器以使用 consul DNS (doc)。
方法 1 是最简单的,但有很大的限制(相同的节点)。方法 2 为我工作了好几年。 Nomad 非常聪明,它会在服务器 IP/端口发生变化时重新加载/重新启动您的客户端 IP。
【讨论】:
以上是关于如何将两个 docker 容器与 nomad 连接的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Nomad 与 Nvidia Docker 一起使用?
如何在 HashiCorp nomad 环境中管理网络和存储?
如何将节点 docker 容器与 postgres docker 容器连接起来