如何为所有 docker 容器提供动态主机名?

How do I provide dynamic host names for all docker containers?

目前,我只有一台机器,我开始 运行 docker 图像。我想要做的是让所有容器都可以通过基于容器名称的主机名进行访问。因此,如果我有容器 C1C2,并且 docker 服务器的主机是 mydocker.local,那么 c1.mydocker.local 将指向容器映像 [=11] =] 如果我要 运行 C3,它会变成 C3.mydocker.local.

docker-dns 似乎与我正在尝试做的类似,但该项目已经 7 个月没有更新,而且文档不足以让我得到它 运行ning。

这似乎是一个非常常见的用例,但我无法创建合适的 google 查询魔法来查找任何内容。

您可以尝试 docker-gen 自动更新主机的 hosts 文件,或创建 dns 服务,例如 Dnsmasq

我还找到了一个名为 dns-gen 的 docker 图像,它仅使用 docker-gen 和 dnsmasq,可能会解决您的问题。

A 如果容器要相互依赖,您应该使用显式链接。这将更新容器内的 etc 主机文件,为每个链接的容器添加 IP。

如果您确实想要类似 Rancher 的东西,将为您提供一个完整的虚拟专用网络,其中每个容器都有自己的 IP。 Rancher 还支持为所有 运行 容器维护 DNS 的服务。使用 rancher 的好处是它也可以在多主机场景中工作。