如何将两个 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 一起使用?

如何将两个NodeJS docker容器连接在一起?

如何在 HashiCorp nomad 环境中管理网络和存储?

如何将节点 docker 容器与 postgres docker 容器连接起来

将 Django 和 Postgresql 与 Docker 连接起来

如何在搬运工中将两个 docker 容器相互连接