docker-compose up -d报错ERROR: Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)该怎么解决?

这是Docker 访问 Docker Hub(registry-1.docker.io)超时引起的,测试镜像加速是否生效(关键验证)

在服务器执行:

docker info | sed -n '/Registry Mirrors/,+5p'

看到:

WARNING: No cpu cfs quota support 
Registry Mirrors: 
https://docker.xuanyuan.me/ 
Live Restore Enabled: false

ChatGPT给的方案是把 Caddy 镜像改成 GHCR,然后重新拉起,但是按照它的方案,之前总是在错误中循环,把GPT的方案发给谷歌AI,这样回复的:

你提供的 docker info 输出信息显示,你的镜像源配置已经生效了Registry Mirrors: https://docker.xuanyuan.me/),但你依然报错,这通常有以下几个原因:

1. 镜像源虽然显示,但实际“不可达”

即便 docker info 列出了镜像源,如果该源的服务器在国内被墙、限流或挂了,docker pull 依然会失败。目前的现状是: 

  • xuanyuan.me 等公益源在高峰期经常由于带宽限制导致连接超时或 502/503 错误。
  • WARNING 提示:你看到的 No cpu cfs quota support 等警告属于内核功能限制(通常出现在虚拟机或旧版内核中),不影响你拉取镜像,可以暂时忽略。 

2. GHCR 镜像不是“救命稻草” 

你之前想把 Caddy 改成 ghcr.io/caddybuilds/caddy:2。这个操作风险很高

  • 连通性差ghcr.io (GitHub) 在国内的访问质量比 Docker Hub 还差,经常直接 Connection Refused
  • 版本差异caddybuilds/caddy 是第三方个人构建,可能缺少官方版的功能,生产环境不建议使用。 

3. 最稳妥的解决办法

建议放弃修改镜像名,直接配置多个更稳的加速源,并重启服务

第一步:更新 daemon.json 

请删除旧配置,改用目前 2026 年 2 月初确认可用的组合: 

bash

sudo tee /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": [
    "https://docker.nju.edu.cn",
    "https://docker.1panel.live",
    "https://hub.rat.dev",
    "https://docker.xuanyuan.me"
  ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

第二步:清理并重新拉取

不要只改 docker-compose.yml,先清理之前的失败残留,再拉取: 

bash

cd /opt/stack
# 停止旧容器
docker-compose down 
# 尝试拉取(会自动尝试列表里的所有加速源)
docker-compose pull

4. 终极绝招:直接指定加速前缀

如果 daemon.json 还是不生效,直接在 docker-compose.yml 里给镜像名加前缀,这是目前国内最有效的手段: 

yaml

services:
  caddy:
    # 强制走 1Panel 的加速代理
    image: docker.1panel.live/library/caddy:2
  gotify:
    image: docker.1panel.live/gotify/server:latest

很不错,第3步就通了,第4步还没验证,但是ChatGPT和谷歌AI,真的在2026年2月2日这一天,还是高下立见的。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注