怎么解决无法拉取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 愉快!

目录
相关文章
|
16天前
|
存储 SQL 分布式计算
手把手教你搞定大数据上云:数据迁移的全流程解析
本文深入探讨了企业数据迁移的核心价值与复杂挑战,重点分析了离线大数据平台在物理传输、系统耦合与数据校验三方面的难题。文章系统阐述了存储格式、表格式、计算引擎等关键技术原理,并结合LHM等工具介绍了自动化迁移的实践演进,展望了未来智能化、闭环化的数据流动方向。
339 11
手把手教你搞定大数据上云:数据迁移的全流程解析
|
8天前
|
存储 人工智能 自然语言处理
LlamaIndex 深度实战:用《长安的荔枝》学会构建智能问答系统
本文深入浅出地讲解了RAG(检索增强生成)原理与LlamaIndex实战,通过《长安的荔枝》案例,从AI如何“读书”讲起,详解三大关键参数(chunk_size、top_k、overlap)对问答效果的影响,并结合真实实验展示不同配置下的回答质量差异。内容兼顾新手引导与进阶优化,帮助读者快速构建高效的文档问答系统。
LlamaIndex 深度实战:用《长安的荔枝》学会构建智能问答系统
|
8天前
|
人工智能 安全 Java
SpecKit 在成熟 Java 项目中的 AI 编码实践
本文探索AI Code与SpecKit在Java应用中的实践,结合规格驱动开发(SDD)与测试驱动开发(TDD),通过定义原则、需求规格化、技术方案设计等步骤,实现风格统一、可追溯的AI辅助编码。分享选型考量、执行流程及问题优化,总结经验并沉淀为应用级知识资产,提升研发效率与代码规范性。(239字)
SpecKit 在成熟 Java 项目中的 AI 编码实践
|
16天前
|
存储 数据采集 监控
分钟级定位 IO 瓶颈:多租户云环境下的智能诊断
阿里云推出IO一键诊断功能,智能识别IO延迟高、流量异常等问题,通过动态阈值与多指标关联分析,实现秒级异常发现与根因定位,提升云环境存储性能问题解决效率。
151 10
分钟级定位 IO 瓶颈:多租户云环境下的智能诊断
|
5天前
|
Kubernetes Cloud Native Nacos
MCP 网关实战:基于 Higress + Nacos 的零代码工具扩展方案
本文会围绕如何基于 Higress 和 Nacos 的 docker 镜像在 K8s 集群上进行分角色部署。
|
17天前
|
缓存 运维 监控
一次内存诊断,让资源利用率提升 40%:揭秘隐式内存治理
阿里云云监控 2.0 推出 SysOM 底层操作系统诊断能力,基于 eBPF + BTF 协同分析,无需侵入业务,即可一键完成从物理页到文件路径、再到容器进程的全栈内存归因,让“黑盒内存”无所遁形。
423 67
|
1天前
|
数据采集 分布式计算 监控
Airflow 做 ETL,真不是“排个 DAG 就完事儿”:那些年我踩过的坑与悟出的道
Airflow 做 ETL,真不是“排个 DAG 就完事儿”:那些年我踩过的坑与悟出的道
34 4
Airflow 做 ETL,真不是“排个 DAG 就完事儿”:那些年我踩过的坑与悟出的道
|
1天前
|
API 网络架构
【Azure Developer】中国区Azure环境中查看用户账号是否可用(accountEnabled)的操作步骤
本文介绍在21V(世纪互联运营的中国版Azure)环境中,如何通过Microsoft Graph API正确获取用户accountEnabled状态。针对国家云与全球版在令牌端点、域名及权限范围上的差异,提供从登录、获取Token到查询用户状态的完整操作步骤,避免401/403错误或属性返回null的问题,确保API调用成功。
|
1天前
|
数据采集 监控 NoSQL
基于n8n创建自愈式用例库及质量知识图谱
本文分享了如何基于n8n构建自愈型质量管理系统。通过自动化采集缺陷、需求等数据并构建知识图谱,系统能智能分析、自动修复用例库。方案大幅降低了维护耗时与缺陷逃逸率,将测试团队从重复劳动中解放,转向质量策略设计,实现了质量数据的持续流动与优化。
|
1天前
|
人工智能 监控 Cloud Native
架构级拆解:AI数字人与数字员工的核心差异,玄晶引擎云原生实践启示
本文揭示AI数字人与AI数字员工的本质差异:前者仅为可视化交互组件,后者是具备业务闭环能力的云原生智能体。基于玄晶引擎与阿里云PAI实测,从架构、系统对接到弹性部署,解析如何实现“交互→决策→执行”全流程自动化,助力开发者精准选型,避免落地陷阱。
57 11