Docker守护程序和DNS

时间:2015-04-13 14:24:39

标签: dns docker

我正在尝试强制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命令。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您已将--dns 172.17.42.1传递给docker_opts,因此您应该能够从其他容器中解析容器主机名。 但是显然你正在从主机做docker pull,而不是从容器做,不是吗?因此,您无法从主机解析容器的主机名也就不足为奇了,因为它未配置为使用172.17.42.1进行解析。

我在这里看到两种可能的解决方案:

  1. 强制您的主机使用172.17.42.1作为DNS(/etc/resolv.conf等)。
  2. 在里面创建一个包含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