Fedora 37运行Docker时出现Client.Timeout错误求助
Fedora 37运行Docker时出现Client.Timeout错误求助
Hi Sunny, 我之前在禁用IPv6后也碰到过Docker连不上镜像仓库的问题,给你几个亲测有效的排查和解决方法:
强制Docker使用IPv4
你禁用了系统IPv6,但Docker默认可能还在优先尝试用IPv6连接镜像仓库,这就导致了超时。我们可以通过配置让Docker完全使用IPv4:- 先创建Docker的配置目录(如果还没有的话):
sudo mkdir -p /etc/docker - 编辑Docker的守护进程配置文件:
sudo nano /etc/docker/daemon.json - 在文件中添加以下配置内容:
这里{ "ipv6": false, "dns": ["8.8.8.8", "8.8.4.4"] }ipv6: false会直接禁用Docker的IPv6支持,同时指定公共DNS服务器可以避免系统DNS解析异常的问题。 - 最后重启Docker服务让配置生效:
完成后再运行sudo systemctl restart dockersudo docker run hello-world试试,应该就能正常拉取镜像了。
- 先创建Docker的配置目录(如果还没有的话):
检查Firewalld防火墙规则
Fedora默认启用的firewalld有时候会干扰Docker的网络请求,你可以先临时关闭防火墙测试:sudo systemctl stop firewalld如果测试后Docker能正常运行,说明是防火墙的问题,需要给Docker添加必要的规则:
sudo firewall-cmd --add-masquerade --permanent sudo firewall-cmd --reload之后重启防火墙和Docker服务即可。
验证系统网络连通性
你可以先在终端测试系统能不能正常访问Docker镜像仓库:curl https://registry-1.docker.io/v2/如果这个命令也超时,说明是系统层面的网络问题,大概率是禁用IPv6后的DNS解析出了问题。可以修改系统DNS为公共DNS,比如编辑
/etc/resolv.conf文件,添加:nameserver 8.8.8.8 nameserver 8.8.4.4要是你的网络是用NetworkManager管理的,建议在系统设置的网络选项里修改DNS,这样重启后不会被覆盖。
备注:内容来源于stack exchange,提问作者Sunny




