Docker容器内部 DNS 解析失败的问题
上段时间遇到了 docker 容器内部 dns 解析失败的问题,发现在 docker run启动容器之后,容器内部访问外部的接口总是提示无法解析 dns,然而容器外部是可以解析的,dns的配置也没有任何问题。用docker exec -it contaner_name bash进去,ping 任何域名都是不通。最终的解决办法在在于,停止 docker daemon,删掉 ifconf...
·
上段时间遇到了 docker 容器内部 dns 解析失败的问题,发现在 docker run 启动容器之后,容器内部访问外部的接口总是提示无法解析 dns,然而容器外部是可以解析的,dns的配置也没有任何问题。
用 docker exec -it contaner_name bash
进去,ping 任何域名都是不通。
最终的解决办法在在于,停止 docker daemon,删掉 ifconfig 查到的 docker0 这个 bridge,再重新启动 docker daemon,问题解决:
官方的解决脚本是这样的:
$ sudo apt-get install bridge-utils -y
$ sudo service docker stop
$ sudo ip link set dev docker0 down
$ sudo brctl delbr docker0
$ sudo service docker start
$ docker network inspect bridge
实际上我做了这一步就成功了:
$ sudo service docker stop
$ sudo ip link set dev docker0 down
$ sudo service docker start
当然,我还需要 docker run -d
启用我原来的容器。
UPDATE 2017-01-22
彻底解决办法:
1. 在 docker-compose.yml
的容器配置里面,加入 dns 配置:
2. 参照 https://github.com/docker/docker/issues/541#issuecomment-32444639
在 “/etc/default/docker” 添加:
DOCKER_OPTS="-dns 119.29.29.29 -dns 180.76.76.76"
然后重启
xxx:
image: xxx
volumes:
- xxx:xxx
- xxx:xxx
links:
- xxxx:xxx
depends_on:
- xxxxxx
dns:
- 119.29.29.29
- 180.76.76.76
更多推荐
已为社区贡献1条内容
所有评论(0)