我正在尝试强制docker守护程序使用绑定到bridge0接口的DNS服务器。 我在docker_opts中添加了--dns 172.17.42.1但没有成功
DNS服务器使用dig命令回复:
dig @172.17.42.1 registry.service.consul SRV +short
1 1 5000 registry2.node.staging.consul.
但是使用此域名失败了:
docker pull registry.service.consul:5000/test
FATA[0000] Error: issecure: could not resolve "registry.service.consul": lookup registry.service.consul: no such host
PS:在我的/etc/resolv.conf中添加名称服务器172.17.42.1解决了这个问题,但DNS必须专门用于docker命令。
有什么想法吗?
答案 0 :(得分:2)
您已将--dns 172.17.42.1
传递给docker_opts,因此您应该能够从其他容器中解析容器主机名。 但是显然你正在从主机做docker pull
,而不是从容器做,不是吗?因此,您无法从主机解析容器的主机名也就不足为奇了,因为它未配置为使用172.17.42.1
进行解析。
我在这里看到两种可能的解决方案:
172.17.42.1
作为DNS(/etc/resolv.conf
等)。在里面创建一个包含Docker客户端的特殊容器,并在其中挂载docker.sock
。这将使您能够使用所有客户端命令,包括pull
:
docker run -d -v /var/run/docker.sock:/var/run/docker.sock:rw --name=client ...
docker exec -it client docker pull registry.service.consul:5000/test