Docker 守护进程和 DNS
Docker daemon and DNS
我试图强制 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 命令。
有什么想法吗?
您将 --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
我试图强制 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 命令。
有什么想法吗?
您将 --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