docker的DNS没有看到外部服务器
我最近有Docker版本17.04-CE的主机名解决问题,我不知道是什么原因造成的。 我目前有docker安装程序不要在运行时使用任何选项,但最近我的容器不能访问谷歌和互联网上的任何其他主机通过域名连接(IPV4工作正常,我可以ping外部IP)。
我已经添加了dns:8.8.8.8到docker-compose.yml的服务,这是一个bandaid,但是当使用任何其他docker-compose文件(如laradock)时,我无法ping或curl外部服务器。 我仍然可以curl其他docker实例,我可以实际上curl我的内部网服务器。 在容器中手动更改/etc/resolv.conf工作,但我需要它开箱即用。 另外,如果我通常使用docker run来启动一个容器,那么按照预期的方式,可以使用例子容器bashfunction。
docker-compose运行resolv.conf(docker-compose up -d nginx mysql && docker-compose exec workspace cat /etc/resolv.conf) – NOT WORKING
search machines.redacted.ca it.redacted.ca services.redacted.ca apps.redacted.ca nameserver 127.0.0.11 options ndots:0
香草docker resolv.conf(docker运行-it mysql ping google.ca) – 工作精细
# Generated by resolvconf search machines.redacted.ca it.redacted.ca services.redacted.ca apps.redacted.ca nameserver 192.168.5.5 #Internal DNS server nameserver 8.8.8.8
对我来说,最终结果是我的内部DNS服务器是块recursionDNS查询。 我通过在debugging模式下设置docker来跟踪这个bug,然后监控docker和dns服务器日志。 Docker似乎正在发送DNS查询,但看起来像Bind9吐出关于拒绝recursion查询的错误。 我GOOGLE了这个问题,并改变下面的设置,一切工作再次。 我将以下内容添加到bind9configuration,它工作。
奇怪的是,我的同事之一是使用相同的方法,但查询工作正常。 他正在运行一个不同的发行版,然后是一个老版本的docker和docker-compose。
Named.conf.options:
options { ... allow-recursion { all; }; }
- 在Docker容器中运行Google Chrome Headless
- 从Docker容器执行本地机器上的命令
- 操作系统提供商为Docker制作特殊/定制的操作系统吗?
- Docker拒绝运行bash
- Docker – 无法在java之间的卷之间移动文件
- 在窗户上安装docker云cli
- 如何在docker集装箱运行与gunicorn aiohttp?
- docker-compse生成错误 – 不受支持的版本
- 来自守护进程的错误响应:获取https://registry-1.docker.io/v2/:在192.168.65.1:53上拨号tcp:lookup registry-1.docker.io:没有这样的主机