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

/ 默认分类 / 没有评论 / 196浏览

检查主机网络设置

cat /proc/sys/net/ipv4/ip_forward

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

vi /etc/sysctl.conf

打开内核配置文件,查找net.ipv4.ip_forward = 0,将其修改为net.ipv4.ip_forward = 1,若该行开头有#,将其去掉;若配置文件中没有此项,则在文件最后添加此内容。

 11 
 12 # Controls IP packet forwarding
 13 net.ipv4.ip_forward = 1
 14 

保存修改后,重启系统或输入以下命令使修改生效:

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

检查主机防火墙配置

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

sudo firewall-cmd --state

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

sudo firewall-cmd --query-masquerade

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

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

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

sudo firewall-cmd --reload

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

设置Docker指定DNS服务器

打开Docker相关设置文件(主机内)

没有就新建一个,输入下列命令会打开或自动新建:

vi /etc/docker/daemon.json

在文件中输入以下内容

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

重启Docker

systemctl restart docker