解决Docker容器内无法解析DNS的问题
问题描述
先前Nexus一直报错 UnknownHostException: rhc.sonatype.com
于是在docker中启动了一个centos镜像用于测试 ping www.baidu.com
。
几乎试遍了能找到的所有方法,包括“修改DNS”,“修改Docker配置”,“关闭防火墙”,“禁用virbr0网络连接”等,全部无效。
无意中发现直接ping ip地址居然可以ping通,确定问题发生在DNS解析上,并猜测多半还是跟防火墙有关。于是改用关键字docker dns 防火墙
进行搜索。于是找到了如下方法。
- 注:Docker 容器默认网络模式为bridge
解决方案
防火墙开启伪装IP功能
// https://www.cnblogs.com/architectforest/p/12389218.htmlfirewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --reload
systemctl restart firewalld
systemctl restart docker
还看到另一个方法,未测试有效性,先放在这里
// https://blog.csdn.net/mostone/article/details/105815866// 将网络接口 docker0 加入 trusted zone
firewall-cmd --permanent --zone=trusted --add-interface=docker0
通过host模式启动容器
这是最简单的方法,容器启动即可直接访问外网,但是无法指定容器对外暴漏的端口,将使用默认端口。
docker run -it --net=host centos
以上是 解决Docker容器内无法解析DNS的问题 的全部内容, 来源链接: utcz.com/z/516133.html