所有外部DNS查询因docker容器内失败

问题描述 投票:0回答:2
电流Docker版本:

1.13.1, build 092cba3

.
/etc/resolv.conf:

search mycompany.local nameserver 127.0.0.11 options ndots:0

(真实的公司名称混淆)。

nslookup

主机上本身100%罚款,但是在容器中,任何外部主机名外观失败(无法运行

apt-get update

)。
我的4节点簇中的所有宿主都持续存在相同的症状。
请注意,内部服务名称分辨率似乎在容器之间工作。

直接在我的笔记本电脑(在同一办公网络上)主机名上的同一应用程序解决方案。
这成为一场缓慢的灾难。

所涉及的群集仍然是1.12构建,它可能具有任何轴承。

在Linux,

lo

或Localhost接口将具有地址127.0.0.1/8(即NetMask 255.0.0.0)。 NetMask涵盖了整个范围:

docker dns docker-swarm
2个回答
2
投票

SINCE127.0.0.11落入此范围内,该地址的连接将尝试通过

lo
接口(

内侧)作为连接的路线路由。除非您的集装箱内部配置了该地址,否则在该地址上会聆听DNS解析器,这将导致连接超时。 您可能可以通过路由127.0.0.11来解决此问题(例如,例如
eth0
),也可以通过更改DNS解析器地址,以便它以127.0.0.0/8.8.

之外 您还可以显式设置DNS服务器IP。

docker run --dns 1.2.3.4                  # set one server
docker run --dns 1.2.3.4 --dns 5.6.7.8    # set multiple servers
或使用docker-compose.yml: dns: 1.2.3.4 dns: - 1.2.3.4 - 5.6.7.8

我使用的设置是:


安装

dnsmasq

.
run
Restart

echo interface=docker0 > /etc/dnsmasq.d/docker

.
add

0
投票
到您的

--dns 172.17.0.1

或docker守护程序(将其添加到
    docker-run
  1. 中的
    DOCKER_OPTS
    变量或编辑
  2. /etc/default/docker
  3. 指令中的
    ExecStart
    )。
  4. Restartdocker.
  5. 现在,您所有的容器都指向DNSMASQ是DNS解析器。另一方面是您在
  6. /lib/systemd/system/docker.service
  7. 中的条目也得到了解决。
    	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.