Docker守护进程和DNS

我试图强制docker守护进程使用绑定到bridge0接口的DNS服务器。 我已经在我的docker_opts中添加了–dns 172.17.42.1,但没有成功

DNS服务器答复确定与挖命令:

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中添加nameserver 172.17.42.1解决了这个问题,但是DNS必须专门用于docker命令。

任何想法 ?

您将--dns 172.17.42.1传递给了docker_opts,因此您应该能够从其他容器中parsing容器主机名。 显然你是从主机,而不是从容器中进行docker pull ,不是吗? 因此,您不能从主机上parsing容器的主机名是不足为奇的,因为它没有被configuration为使用172.17.42.1来parsing。

我看到两个可能的解决scheme:

  1. 强制你的主机使用172.17.42.1作为DNS( /etc/resolv.conf等)。
  2. 用Docker客户端创build一个特殊的容器,并在里面安装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