首页 > 解决方案 > 我可以为我的堆栈中的服务设置稳定的完全限定域名吗?

问题描述

我试图让 Erlang 和 Docker Swarm 一起玩,但我很难过。主要问题似乎是 Erlang 要求我的节点具有完全限定的域名,或者至少看起来像它的东西(没有句点的主机名往往会导致错误)。

以前,我确实使用了 docker 覆盖网络,但没有使用堆栈/服务,并且我会手动运行名为“xxx.yyy”的容器。如果节点位于不同的主机上,Docker 也会解析“xxx.yyy”,并且 Erlang 很高兴。现在,我想切换到使用 docker stack,但在这种情况下,Docker 不再通过容器名称解析,而是通过服务名称解析。只有一个问题:服务名称中的句点是非法的,但是如果我尝试将我的 Erlang 节点命名为“nodename@hostname”(没有句点),这会导致 Erlang 方面出现问题。

我注意到我可以为服务设置“主机名:”属性,并且可以在其中包含句点,但是该名称仅在容器本身内部解析,无法通过网络识别。

有什么方法可以为 Docker 服务设置自定义地址,该地址可以包含句点,可以在其他服务的节点上正确解析,并且在服务替换其容器时保持稳定?

注意:我尝试过使用 Erlang 的“-sname”,但这似乎使用容器 id 作为主机名,在通过网络连接到其他节点时仍然需要包含它,并且随着服务更新/重启,这并不稳定。

NB2:我还在这里找到了可能使用“链接:”属性的信息,但看起来这在 swarm 上不起作用(也许只在 compose 上?)。

标签: dockererlangdocker-swarm

解决方案


推荐阅读