目前,我有一台机器,我开始运行docker images。我想要做的是根据容器名称通过主机名访问所有容器。因此,如果我有容器C1
和C2
,并且docker服务器的主机是mydocker.local
,那么c1.mydocker.local
将指向容器图像C1
,如果我要运行C3
,它将以C3.mydocker.local
的形式提供。
docker-dns似乎与我正在尝试的相似,但该项目尚未更新7个月,文档还不足以让我运行。
这似乎是一个非常常见的用例,但我无法创建适当的Google查询魔法来查找任何内容。
答案 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的服务。使用牧场主的好处是它也可以在多宿主场景中使用。