这个错误 Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) 通常是由于以下原因导致的:
- 网络连接问题:Docker Hub 是国外服务器,国内访问可能受限或不稳定
- DNS 解析问题:无法正确解析 Docker Hub 的域名
- 防火墙或代理拦截:公司网络或防火墙阻止了连接
- 配置错误:Docker 的配置文件存在问题
1. 检查基本网络连接
首先测试网络是否能正常访问 Docker Hub:
bash
运行
# 测试网络连接
ping registry-1.docker.io
curl -v https://registry-1.docker.io/v2/ --connect-timeout 5
2. 配置国内镜像加速器(推荐解决方案)
这是解决国内访问 Docker Hub 慢或超时的最有效方法:
bash
运行
# 备份原配置文件(如果存在)
sudo cp /etc/docker/daemon.json{,.bak} 2>/dev/null || true
# 创建或修改配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.1panel.live/",
"https://e2zfh98i.mirror.aliyuncs.com",
"https://mirror.baidubce.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker-cf.registry.cyou"
]
}
EOF
# 重新加载配置并重启Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
3. 检查和修复 DNS 配置
如果是 DNS 解析问题,可以尝试修改 DNS 设置:
bash
运行
# 临时修改DNS(重启后失效)
sudo tee /etc/resolv.conf <<-'EOF'
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 114.114.114.114
EOF
# 重启网络服务
sudo systemctl restart systemd-resolved
4. 配置代理(如果需要)
如果您在公司内网需要使用代理:
bash
运行
# 创建代理配置目录
sudo mkdir -p /etc/systemd/system/docker.service.d
# 创建代理配置文件
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<-'EOF'
[Service]
Environment="HTTP_PROXY=http://your-proxy-server:port"
Environment="HTTPS_PROXY=http://your-proxy-server:port"
Environment="NO_PROXY=localhost,127.0.0.1"
EOF
# 重新加载配置并重启Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
5. 测试解决方案
配置完成后测试是否解决:
bash
运行
# 测试拉取镜像
docker pull nginx
# 查看Docker信息确认配置生效
docker info | grep -i "Registry Mirrors" -A 10
高级排查
如果以上方法都不奏效,可以尝试:
bash
运行
# 查看Docker日志获取详细错误信息
sudo journalctl -u docker.service
# 检查防火墙设置
sudo ufw status
# 更新Docker到最新版本
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
总结
这个问题的核心是 Docker 无法连接到 Docker Hub 服务器。最常见的解决方案是配置国内镜像加速器,这样可以绕过直接访问国外服务器的限制,显著提高拉取镜像的速度和稳定性。
建议您先尝试配置镜像加速器,如果问题仍然存在,再根据具体情况检查网络连接、DNS 设置或代理配置。


中文 
Using default tag: latest
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
sudo docker run nginx出现如上错误,是什么原因,如何解决,求指教