我可以为堆栈中的服务设置稳定的标准域名吗?

时间:2019-03-26 08:48:40

标签: docker erlang docker-swarm

我正在尝试让Erlang和Docker Swarm一起玩,但我很难过。主要问题似乎是Erlang要求我的节点具有完全限定的域名,或者至少具有类似的名称(没有句点的主机名容易引起错误)。

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

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

是否可以通过某种方式为Docker服务设置自定义地址,该地址可以包含句点,可以在其他服务的节点上正常解析,并且在服务替换其容器时保持稳定?

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

NB2:我还发现信息here可能可以使用“ links:”属性,但似乎不适用于swarm(也许仅适用于compose?)。

0 个答案:

没有答案