当前位置: 首页 > news >正文

解决腾讯云服务器上 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 <<<'...'
重启 Dockersudo systemctl restart docker
查看 Docker 日志sudo journalctl -u docker -n 50
清理 Docker 缓存sudo docker system prune -a -f

如果这篇文章对你有帮助,欢迎点赞、收藏、转发~

http://www.jsqmd.com/news/813597/

相关文章:

  • 在线考试系统如何实现随机组卷
  • iOS开发者必备:AI编码助手技能库提升Swift开发效率
  • PHP集成Fathom会议记录AI实现语音转写【技巧】
  • 存智赋能 共筑AI存储新生态,移动云聚力技术创新夯实AI数据基石
  • 【翼型】涡板块法计算二维翼型【含Matlab源码 15441期】
  • 终极指南:3步搭建开源游戏串流服务器Sunshine,解锁跨设备游戏自由 [特殊字符]
  • Redis如何通过Lua减少网络通信开销
  • OpenClaw机器人项目工作空间:一键搭建开发环境与模块化实践
  • html标签如何提交表单_button type=submit作用【详解】
  • 好风凭借力,送我上青云
  • PHP文件上传绕过新思路:用.htaccess+GIF89a头绕过exif_imagetype检测的完整操作指南
  • AI周报智能体:自动化信息聚合与LLM摘要生成实战
  • 性价比高的芯片老化座哪家技术强?
  • 模块化AI智能体框架:从原理到实践,打造高效开发副驾驶
  • 终极解决方案:如何永久免费使用Cursor Pro高级功能
  • 终极指南:如何用NSC_BUILDER一站式管理你的Switch游戏文件库
  • springboot智能垃圾识别分类管理系统-计算机毕业设计源码11555
  • 氛围驱动开发:从开发者体验到工程文化的范式转变
  • 从黑莓CEO预言失败看技术趋势判断的认知陷阱与实战方法论
  • 基于正向激励与游戏化设计的技能成长系统架构与实践
  • GPU加速时序驱动布局优化技术解析
  • 百度网盘直链解析工具:5分钟实现全速下载的终极方案
  • 别再只用AES了!手把手教你用Java BouncyCastle库实现SM4国密加密(附完整工具类)
  • 开发容器(Dev Container)实战指南:从原理到配置,打造一致高效的开发环境
  • 白沟一个月卖出 8000 万只箱包,但 70% 的拉链/五金销售员跑错了门——一份反向地图
  • day14-C语言-指针函数
  • 基于Markdown与Vue的交互式演示文稿框架Slide-Sage详解
  • Web3信息聚合工具:本地化、无依赖的桌面应用设计与实现
  • Skeleton骨架系统:基于Tailwind CSS的现代前端UI架构实践
  • 2026届学术党必备的六大AI论文工具推荐榜单