怎么解决无法拉取Docker镜像?不如我们自己建一个加速站(

简介: 本教程介绍如何通过GitHub Actions与阿里云容器镜像服务,构建私有Docker镜像加速通道,解决国内无法拉取微软官方Jekyll开发镜像的问题。适用于个人救急使用,无需依赖公共加速器,安全高效。

该教程只能个人救急使用

最近在重新写 Jekyll 个人博客,然后要使用到 VSCode 的 DevContainer,在 Docker 容器里进行预览。

结果我手贱把以前的容器镜像都删了,第一步就卡死了。

我使用的主题jekyll-theme-chirpy.devcontainer/devcontainer.json 配置使用的是微软官方镜像:

"image": "mcr.microsoft.com/devcontainers/jekyll:2-bullseye"

由于国内众所周知的网络原因,Docker Hub 和 MCR (Microsoft Container Registry) 基本处于断连状态。我在本地尝试重新构建镜像的时候反复报错 Get "...": EOF 或者 net/http: TLS handshake timeout,改了Docker Proxy 依然无效。

解决方案

我想了很久...找了很多加速的方法...然后...Gemini3帮我秒了...

既然本地拉不下来,那就找个“海外中转站”!

核心思路:

  1. 利用GitHub Actions拉取微软/官方镜像。
  2. 在 Action 中把镜像推送到 阿里云容器镜像服务。
  3. 本地 DevContainer 直接从阿里云拉取镜像。

不是GitHubActions还有阿里云容器镜像服务都是啥。

简单介绍一下:

  • GitHub Actions:GitHub 提供的“自动化流水线”。
    • 平时:它在睡觉。
    • 触发:当你提交代码或手动点击按钮时,它就被唤醒了。
    • 工作:它会领一台全新的云端电脑(通常是 Ubuntu),照着你给的清单(.yml 文件)一行行执行命令。
    • 结果:干完活(比如搬运镜像)后通知你,然后那台云电脑销毁。
  • 阿里云容器镜像服务ACR:阿里云提供的一个高性能、高可用、安全可靠的容器镜像托管平台。

而Github的服务器刚好就在国外,拉取这些镜像是很方便的,然后推送到阿里云,我们就能成功在国内拉取镜像了

操作步骤

第一步:开通阿里云容器镜像服务 (ACR)

  1. 登录 阿里云容器镜像服务控制台
  2. 创建个人实例(免费)。
  3. 设置 Registry 登录密码:注意这不是阿里云的登录密码,是专门给 Docker 用的固定密码。
  4. 创建命名空间(例如 saku)和镜像仓库(例如 jekyll-mirror)。
  5. 可选:把仓库类型设置为公开 (Public)。这样本地拉取时不需要配置 Docker Login,非常方便。

第二步:配置 GitHub Actions 和 GitHub Secrets

首先fork这个项目docker_sync,相关的Action代码可以参考项目.github\workflows目录下的yml文件

然后按照顺序点击 Settings -> Secrets and variables -> Actions->New repository secret

这里我们以拉取镜像mcr.microsoft.com/devcontainers/jekyll:2-bullseye和命名空间saku为例

需要设置以下参数

  • ALIYUN_USERNAME: 你的阿里云 UserID。
  • ALIYUN_PASSWORD: 第一步里设置的 Registry 独立密码。
  • ALIYUN_NAMESPACE: 第一步中设置的命名空间
  • ALIYUN_REGISTRY: 控制台概览中的公网域名

填写后点击Add secret按照下图添加,添加以上四个Secret。

配置完成后,去 GitHub 仓库的 Actions 页面,选中 Mirror Docker Image to Aliyun,点击 Run workflow,填写相关配置,再点击Run workflow

c0b9acfdc42f4fa68074cbcfb0c7a94d.png

等待拉取完毕,

f5625ca56a78d1b8f70d69b3cef22285.png

此时Action界面显示成功,控制台中也出现了相应的仓库

第三步:修改本地配置

回到本地项目,相应地修改 .devcontainer/devcontainer.json 中的image地址:

"image": "crpi-xxxx.cn-hangzhou.personal.cr.aliyuncs.com/myblog/jekyll-mirror:latest"

地址位置参考仓库基本信息的公网地址

此时重新拉取镜像,一下就成功了...

如果拉取失败,可能是权限的问题,详细参考仓库信息中的操作指南

总结

通过这个方法,我们实际上是利用 GitHub Actions 搭建了一个 “私人的 Docker 镜像加速通道”

这个方案需要自己手动配置一次 Workflow,且阿里云个人版有配额限制,但也算是无可奈何中的解决方案了吧。

祝大家 Coding 愉快!

目录
相关文章
|
21天前
|
缓存 前端开发 JavaScript
Nginx性能优化
本课程深入讲解Nginx性能优化三大核心:动静分离、客户端缓存与Gzip压缩,涵盖反向代理配置、负载均衡实现及日志分析技巧,结合Shell命令与GoAccess工具进行实战统计,助力掌握企业级Web服务优化方案。
160 20
Nginx性能优化
|
22天前
|
人工智能 网络协议 Java
一文带你玩转 WebSocket 全链路可观测
在 AI 实时交互爆发的时代,WebSocket 成为核心协议。但其双向、长连接、流式传输特性,让传统链路追踪频频失效。阿里云 LoongSuite 基于 OpenTelemetry 标准,结合探针增强与自定义扩展,首次实现 WebSocket 全链路可观测,支持 Span 粒度控制、上下文透传、异步衔接与关键性能指标采集。
293 37
|
2月前
|
人工智能 前端开发 算法
大厂CIO独家分享:AI如何重塑开发者未来十年
在 AI 时代,若你还在紧盯代码量、执着于全栈工程师的招聘,或者仅凭技术贡献率来评判价值,执着于业务提效的比例而忽略产研价值,你很可能已经被所谓的“常识”困住了脚步。
1396 89
大厂CIO独家分享:AI如何重塑开发者未来十年
|
16天前
|
消息中间件 人工智能 NoSQL
AgentScope x RocketMQ:打造企业级高可靠 A2A 智能体通信基座
Apache RocketMQ 推出轻量级通信模型 LiteTopic,专为 AI 时代多智能体协作设计。它通过百万级队列支持、会话状态持久化与断点续传能力,解决传统架构中通信脆弱、状态易失等问题。结合 A2A 协议与阿里巴巴 AgentScope 框架,实现高可靠、低延迟的 Agent-to-Agent 通信,助力构建稳定、可追溯的智能体应用。现已开源并提供免费试用,加速 AI 应用落地。
249 36
AgentScope x RocketMQ:打造企业级高可靠 A2A 智能体通信基座
|
16天前
|
存储 缓存 NoSQL
阿里云 Tair 联手 SGLang 共建 HiCache,构建面向“智能体式推理”的缓存新范式
针对智能体式推理对KVCache的挑战,阿里云Tair KVCache团队联合SGLang社区推出HiCache技术,通过多级存储卸载与全局共享机制,实现缓存命中率翻倍、TTFT降低56%、QPS提升2倍,构建面向长上下文、高并发、多智能体协作的下一代推理缓存基础设施。
215 27
阿里云 Tair 联手 SGLang 共建 HiCache,构建面向“智能体式推理”的缓存新范式
|
21天前
|
数据采集 监控 NoSQL
基于n8n创建自愈式用例库及质量知识图谱
本文分享了如何基于n8n构建自愈型质量管理系统。通过自动化采集缺陷、需求等数据并构建知识图谱,系统能智能分析、自动修复用例库。方案大幅降低了维护耗时与缺陷逃逸率,将测试团队从重复劳动中解放,转向质量策略设计,实现了质量数据的持续流动与优化。
|
24天前
|
存储 SQL JSON
打通可观测性的“任督二脉”:实体与关系的终极融合
阿里云推出图查询能力,基于 graph-match、graph-call、Cypher 三重引擎,实现服务依赖、故障影响、权限链路的秒级可视化与自动化分析,让可观测从‘看板时代’迈向‘图谱时代’。
240 39
|
21天前
|
人工智能 程序员 API
GPT-5.2来了,老金详细给你说说它为什么是王
OpenAI悄然上线GPT-5.2,因谷歌Gemini 3发布引发“红色警报”。新模型提升显著:幻觉减少38%,上下文达40万token,支持长文档精准处理;ARC-AGI-2与GDPval评测显示其真实推理与工作能力大幅增强,尤其适合金融、法律等专业场景。推出Instant、Thinking、Pro三版本,满足不同需求。虽无惊艳发布,但聚焦打工人实际应用,标志着AI向通用生产力工具迈进。