docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker容器无法解析域名

Docker容器无法解析域名的处理

作者:三横兰

这篇文章主要介绍了Docker容器无法解析域名的处理问题,具有很好的参考价值,希望对大家有所帮助,

问题

在docker容器内ping ip地址能通,但是ping域名的时候报错

在这里插入图片描述

检查docker的DNS服务器

进入容器

docker exec -it <id or name> /bin/bash

查看DNS服务器是否正确

cat /etc/resolv.conf

修改DNS服务器

a. docker内修改。在/etc/resolv.conf添加一下内容。这种方法只能修改单个docker容器

nameserver 8.8.8.8
nameserver 114.114.114.114

b. 宿主机内修改。这种方法之后创建的docker容器都会生效

vi /etc/docker/daemon.json

添加下面内容

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

重启docker

systemctl restart docker

检查宿主机是否开启转发功能

查看宿主机是否开启

cat /proc/sys/net/ipv4/ip_forward

如果返回的结果为0说明未开启

开启方法

a. 直接修改上述文件

echo 1 > /proc/sys/net/ipv4/ip_forward

这种方式当主机重启的时候会改回原值

b. 修改/etc/sysctl.conf

vi /etc/sysctl.conf

添加下面一行代码

net.ipv4.ip_forward = 1

重启主机或者执行下面的命令使之生效

sysctl -p /etc/sysctl.conf

检查防火墙设置

查看防火墙状态

firewall-cmd --state

返回如果是not running就说明不是防火墙问题

如果是running,进行下一步

查看防火墙是否开启伪装功能

firewall-cmd --query-masquerade

如果为no,执行下面的命令开启

firewall-cmd --add-masquerade --permanent

使配置生效

firewall-cmd --reload

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文