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

时间:2015-07-22 12:02:38

标签: dns docker

目前,我有一台机器,我开始运行docker images。我想要做的是根据容器名称通过主机名访问所有容器。因此,如果我有容器C1C2,并且docker服务器的主机是mydocker.local,那么c1.mydocker.local将指向容器图像C1,如果我要运行C3,它将以C3.mydocker.local的形式提供。

docker-dns似乎与我正在尝试的相似,但该项目尚未更新7个月,文档还不足以让我运行。

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

2 个答案:

答案 0 :(得分:1)

您可以尝试docker-gen自动更新主持人的dns文件,或创建Dnsmasq服务,例如 onData: (data) -> if data.status # clear existing "status-*" classes $(@get('node')).attr 'class', (i,c) -> c.replace /\bstatus-\S+/g, '' @assignedColors = "" @strokeColors = "" # add new class $(@get('node')).addClass "status-#{data.status}" else @assignedColors = @get('colors').split(':') if @get('colors') @strokeColors = ""

我还发现了一个名为dns-gen的泊坞窗图像,它只使用了docker-gen和dnsmasq,可以解决你的问题。

答案 1 :(得分:0)

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

如果您确实需要Rancher之类的内容,则会为您提供一个完整的虚拟专用网络,其中每个容器都有自己的IP。 Rancher还支持为所有正在运行的容器维护DNS的服务。使用牧场主的好处是它也可以在多宿主场景中使用。