共计 685 个字符,预计需要花费 2 分钟才能阅读完成。
CentOS 8 已经发行好长一段时间,为了尝鲜在 Online 独服上安装了 CentOS 8 系统,随之问题来了,发现 Docker 容器无法访问外网,而 CentOS 7 上则不存在这个问题。
排错分析
一开始怀疑是 Docker DNS 设置问题,导致 Docker 容器无法解析。遂修改配置文件 /etc/docker/daemon.json
设置 DNS:
{
"dns" : [
"8.8.8.8",
"1.1.1.1"
]
}
修改后重启 Docker 服务,发现 Docker 容器还是无法联网。
解决办法
通过搜索了解到 CentOS 8 上防火墙发生了一些变化,防火墙原来使用iptables
,现在使用nftables
,猜测可能是转发引起的问题。通过搜索终于在 Github 上找到类似的情况:DNS Not Resolving under Network [CentOS8],解决办法为:
编辑 firewalld 配置文件/etc/firewalld/firewalld.conf
,将:
FirewallBackend=nftables
修改为:
FirewallBackend=iptables
并重启 Firewalld:systemctl restart firewalld.service
最后再重启下 Docker:systemctl restart docker
,验证问题解决。
总结
- 可通过修改
/etc/docker/daemon.json
设置 Docker DNS - CentOS 8 防火墙由
iptables
变更为了nftables
- 可通过修改 Firewalld 配置文件
/etc/firewalld/firewalld.conf
将nftables
换回iptables
正文完
星哥玩云-微信公众号