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:
- 强制你的主机使用
172.17.42.1
作为DNS(/etc/resolv.conf
等)。 -
用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