我一直在使用 Docker Swarm,并遇到了有关服务发现的问题。具体来说,我的一项服务正在利用“主机网络”,并且我从有关 GitHub 问题 的讨论中了解到,我无法同时将我的服务包含在覆盖网络中。
这种情况给我造成了重大障碍,因为它阻止了 Docker Swarm 的 DNSRR 功能的使用。以前,我利用 DNSRR 进行服务发现,特别是识别活动任务的 IP。我正在寻找一种解决方案或功能,允许我查询当前在服务下运行的所有任务,包括它们的私有和/或公共 IP。
此外,当我的服务连接到覆盖网络时,我能够使用其他服务的 DNS 名称直接访问它们。然而,现在我的服务不再是覆盖网络的一部分,我不得不使用私有 IP,这并不是最佳选择。
有人可以为我指出解决这些挑战的解决方案或解决方法吗?任何建议或见解将不胜感激。
预先感谢您的帮助。
我尝试将我的服务添加到覆盖网络中,但失败了
由于 Docker Swarm 的限制,您无法同时拥有
host
和另一个网络。假设您有 traefik
,您可以执行以下操作。
运行两项服务:
traefik
用于外部
a.在主机模式网络上运行并侦听端口 80/443。
b.它仅在主机网络上
c.我假设您需要重新路由,以便 HTTP 转到 HTTPS d.将 HTTPS 路由到其他 traefik
traefik
用于 Docker 群覆盖
a.在覆盖网络上运行
b.从
external-traefik
获取真实IP
c.暴露在不同的端口上,例如
8443