解决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.html

firewall-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

回到顶部