解决腾讯云服务器上 Git 克隆超时与 Docker 镜像拉取失败问题

背景

近日在腾讯云服务器(Ubuntu 22.04)上部署开源项目 new-api 时,遇到了两个典型问题:

  1. 使用 git clone 从 GitHub 拉取代码时,出现 RPC failed: curl 56 Recv failure: Connection timed out 错误,导致克隆中断。

  2. 使用 docker-compose up -d 启动服务时,Docker 无法拉取 redis:latest 等基础镜像,先后遇到 i/o timeoutno such host403 Forbiddencontent size of zero 以及 Docker 服务启动失败等一连串报错。

经过多次尝试,最终使用腾讯云官方镜像加速器 https://mirror.ccs.tencentyun.com 彻底解决了 Docker 拉取问题。本文将完整记录排查过程和解决方案,供遇到类似问题的开发者参考。

环境信息

  • 云服务商:腾讯云(CVM)

  • 操作系统:Ubuntu 22.04

  • Docker 版本:20.10 以上(使用系统包管理器安装)

  • 目标项目QuantumNous/new-api

第一部分:Git 克隆超时问题

现象

bash

复制代码
sudo git clone https://github.com/QuantumNous/new-api.git
Cloning into 'new-api'...
remote: Enumerating objects: 51072, done.
remote: Counting objects: 100% (155/155), done.
remote: Compressing objects: 100% (93/93), done.
error: RPC failed: curl 56 Recv failure: Connection timed out
error: 1116 bytes of body are still expected
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output

原因分析

  • 仓库较大(超过 5 万个对象),国内直连 GitHub 网络不稳定,导致数据传输超时。

  • 默认的 Git 缓冲区大小不足。

解决方案

方案一:浅克隆(推荐,快速有效)

bash

复制代码
git clone --depth 1 https://github.com/QuantumNous/new-api.git

只拉取最近一次提交,大幅减少数据量。后续如需完整历史,可执行 git fetch --unshallow

方案二:增大 Git 缓冲区

bash

复制代码
git config --global http.postBuffer 524288000   # 500MB
git clone https://github.com/QuantumNous/new-api.git
方案三:使用 SSH 协议(需配置 SSH 密钥)

bash

复制代码
git clone git@github.com:QuantumNous/new-api.git

最终采用浅克隆成功拉取代码。


第二部分:Docker 镜像拉取失败

现象演变

  1. 初次运行 sudo docker-compose up -d 时,拉取 redis 镜像出现:

    text

    复制代码
    ERROR: failed to resolve reference ...: dial tcp 31.13.67.41:443: i/o timeout
  2. 配置国内镜像加速器(如中科大、网易、百度云)后,出现:

    • no such host(域名无法解析)

    • 403 Forbidden(镜像源拒绝访问)

    • content size of zero: invalid argument(返回空数据)

  3. 修改配置后,Docker 服务无法启动:

    text

    复制代码
    Active: failed (Result: exit-code)
    Start request repeated too quickly.
  4. 最终使用腾讯云官方镜像加速器才成功:

    bash

    复制代码
    sudo docker pull redis:latest
    # 拉取成功
    sudo docker-compose up -d
    # 服务正常启动

逐步排查与解决过程

1. 配置国内通用镜像加速器(失败)

编辑 /etc/docker/daemon.json

json

复制代码
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
}

重启 Docker:sudo systemctl restart docker

遇到的问题

  • mirror.baidubce.com 域名无法解析 → no such host

  • 中科大、网易源偶尔超时或返回 403

  • 南京大学源 (docker.nju.edu.cn) 返回 403 Forbidden

2. 镜像源导致 Docker 服务启动失败

daemon.json 格式错误(例如多余逗号、引号不匹配)或镜像源地址无效时,Docker 服务会崩溃。

排查命令

bash

复制代码
sudo journalctl -u docker.service -n 50 --no-pager

解决方法:先恢复最小配置,确保 Docker 能启动。

bash

复制代码
echo '{}' | sudo tee /etc/docker/daemon.json
sudo systemctl restart docker
3. 最终成功方案:使用腾讯云官方镜像加速器

对于腾讯云服务器,最优选择是使用腾讯云内网镜像加速器:

bash

复制代码
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF
sudo systemctl restart docker

验证配置

bash

复制代码
sudo docker info | grep -A 5 "Registry Mirrors"

输出应包含你配置的地址。

拉取测试

bash

复制代码
sudo docker pull redis:latest
sudo docker-compose up -d

所有镜像均成功拉取,服务正常启动。

为什么腾讯云镜像能成功?

  • 腾讯云为同地域服务器提供了内网加速器,无需经过公网,速度快且稳定。

  • 该镜像站由腾讯云官方维护,兼容性良好,不存在 403no such host 问题。

经验总结与建议

  1. Git 克隆大型仓库

    • 优先使用 --depth 1 浅克隆。

    • 必要时增大 http.postBuffer

    • 配置 SSH 密钥可提高稳定性。

  2. Docker 镜像拉取

    • 在云服务器上,优先使用云厂商提供的官方镜像加速器 (如腾讯云 mirror.ccs.tencentyun.com、阿里云 *.mirror.aliyuncs.com)。

    • 避免盲目填写网上搜来的公共镜像源,很多已失效或限流。

    • 修改 daemon.json 后务必检查 JSON 格式(可用 cat -n 或在线校验工具)。

    • 若 Docker 服务无法启动,先用 journalctl 查看日志,恢复空配置再逐步添加。

  3. 网络问题排查流程

    • 先确认能否 ping 通外网(ping 8.8.8.8)。

    • 再检查 DNS 解析(nslookup docker.io)。

    • 最后针对具体工具(git/docker)调整配置或使用代理。

结语

国内访问 GitHub 和 Docker Hub 时,网络问题时有发生。通过合理的浅克隆、配置云厂商镜像加速器,大多数问题都能解决。希望本文的记录能帮助到同样在腾讯云上部署服务的开发者。

相关命令速查表

场景 命令
浅克隆 git clone --depth 1 <repo_url>
Docker 配置镜像 sudo tee /etc/docker/daemon.json <<<'...'
重启 Docker sudo systemctl restart docker
查看 Docker 日志 sudo journalctl -u docker -n 50
清理 Docker 缓存 sudo docker system prune -a -f

如果这篇文章对你有帮助,欢迎点赞、收藏、转发~
保存图片 预览大图 复制图像 取消

相关推荐
hhb_6183 小时前
Cube Sandbox(腾讯云开源沙箱)部署核心问题
云计算·腾讯云
EAIReport5 天前
深度拆解WorkBuddy技术实现:腾讯云全场景AI智能体的架构设计与核心逻辑
人工智能·云计算·腾讯云
翼龙云_cloud5 天前
腾讯云代理商:腾讯云qGPU+TRTC实时音视频 AI 处理的黄金组合
人工智能·腾讯云·实时音视频·ai算力·腾讯云qgpu
Damon小智7 天前
腾讯云轻量服务器部署 OpenClaw + QClaw 全流程实践:打造随时在线的个人 AI 助手
服务器·云计算·腾讯云
行业研究员7 天前
腾讯云Agent Memory科学评估框架与落地实践
腾讯云
xiejava101810 天前
个人博客Hugo接入阿里云腾讯云ESA边缘加速实战指南
阿里云·云计算·腾讯云·hugo
谷哥的小弟12 天前
(最新版)腾讯云服务器项目部署教程(4)— 部署项目
linux·运维·服务器·云计算·腾讯云·云服务器·项目部署
Mr数据杨13 天前
【腾讯云智能体】志愿填报联网搜索与知识库问答
云计算·腾讯云
翼龙云_cloud13 天前
腾讯云代理商:腾讯云部署的Hermes Agent如何接入QQ ?
人工智能·云计算·腾讯云·ai智能体·hermes agent