Docker容器内无法解析域名:Temporary failure in name resolution

出现的问题

进入Docker容器后,访问网络时提示:Temporary failure in name resolution(域名解析暂时失败),进一步排查:

  1. 主机网络访问正常;
  2. Docker容器内ping网站ip正常;
  3. Docker容器内ping网站域名失败。

解决办法

说明:我的操作环境为CentOS 8,与CentOS 7使用命令完全一致。其他不同Linux系统版本命令可能会有所不同,请根据自己的系统版本使用对应命令,直接百度相关操作即可。

1. 检查主机网络设置

查看系统是否打开ip地址转发功能:

cat /proc/sys/net/ipv4/ip_forward

返回0则说明未打开,开启ip地址转发:

vi /etc/sysctl.conf

打开内核配置文件,查找net.ipv4.ip_forward = 0,将其修改为net.ipv4.ip_forward = 1,若该行开头有#,将其去掉;若配置文件中没有此项,则在文件最后添加此内容。
在这里插入图片描述
保存修改后,重启系统或输入以下命令使修改生效:

sysctl -p /etc/sysctl.conf
systemctl restart network

检查一下问题是否解决,若没有则进入下一步排查。

2. 检查主机防火墙配置

查看防火墙状态(若防火墙为关闭状态,可跳过防火墙有关设置):

sudo firewall-cmd --state

若返回runging,则防火墙为开启状态,查看防火墙是否开启ip地址转发(ip地址伪装):

sudo firewall-cmd --query-masquerade

若返回no,则输入以下命令开启ip地址转发:

sudo firewall-cmd --add-masquerade --permanent

然后输入以下命令使修改生效:

sudo firewall-cmd --reload

再次检查问题是否已经解决,若没有则进行再一步排查。

3. 设置Docker指定DNS服务器

打开Docker相关设置文件(主机内),没有就新建一个,输入下列命令会打开或自动新建:

vi /etc/docker/daemon.json

在文件中输入以下内容:

{
	"dns": ["8.8.8.8","114.114.114.114"]
}

8.8.8.8114.114.114.114是两个DNS服务器,可以修改或增加。修改后是这个样子:
在这里插入图片描述
然后重启Docker:

systemctl restart docker

到这里问题应该就可以得到解决了。

  • 17
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值