docker - 我可以为我的堆栈中的服务设置稳定的完全限定域名吗?
问题描述
我试图让 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 上?)。
解决方案
推荐阅读
- python - 用元组替换单元格
- java - Java中的引用类型是通过引用还是值分配的?
- xcode - SwiftUI 中 watchOS 的 NavigationBarTitle 颜色更改
- python - 我可以让 setuptools 只安装依赖项吗?
- php - 显示缩略图,使其成为 mysql 服务器上的 imageblob 的链接
- haskell - 在 haskell 中,GHCi 命令行上的 let x= 和 x= 之间有什么区别吗?
- r - 在 PM2 集群模式下运行 R 脚本
- c# - 计时器未在 C# 中更新 firebase 数据库
- powershell - 在 Powershell 中的 cmdlet 调用中忽略证书错误 AD
- common-lisp - 在apply mapcar中使用`cons`