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

目录
相关文章
|
1月前
|
缓存 前端开发 JavaScript
Nginx性能优化
本课程深入讲解Nginx性能优化三大核心:动静分离、客户端缓存与Gzip压缩,涵盖反向代理配置、负载均衡实现及日志分析技巧,结合Shell命令与GoAccess工具进行实战统计,助力掌握企业级Web服务优化方案。
190 25
Nginx性能优化
|
1月前
|
人工智能 网络协议 Java
一文带你玩转 WebSocket 全链路可观测
在 AI 实时交互爆发的时代,WebSocket 成为核心协议。但其双向、长连接、流式传输特性,让传统链路追踪频频失效。阿里云 LoongSuite 基于 OpenTelemetry 标准,结合探针增强与自定义扩展,首次实现 WebSocket 全链路可观测,支持 Span 粒度控制、上下文透传、异步衔接与关键性能指标采集。
359 40
|
1月前
|
API 网络架构
【Azure Developer】中国区Azure环境中查看用户账号是否可用(accountEnabled)的操作步骤
本文介绍在21V(世纪互联运营的中国版Azure)环境中,如何通过Microsoft Graph API正确获取用户accountEnabled状态。针对国家云与全球版在令牌端点、域名及权限范围上的差异,提供从登录、获取Token到查询用户状态的完整操作步骤,避免401/403错误或属性返回null的问题,确保API调用成功。
|
1月前
|
人工智能 数据可视化 BI
n8n 与 Coze 怎么选?低代码集成与AI智能体的自动化路线对比
本文对比了n8n和Coze两款自动化工具。n8n开源灵活,适合技术人员处理复杂系统集成和自定义逻辑;Coze无代码易上手,便于业务人员快速搭建审批等标准流程。实际应用中,可根据团队角色和流程复杂度选择,或混合使用以形成完整的自动化闭环。
|
1月前
|
监控 安全 Cloud Native
2025年十款多因素认证(MFA)解决方案对比
选择合适的多因素认证(MFA)服务,对于保护企业抵御日益增长的网络威胁至关重要。目前市场上MFA解决方案种类繁多,如何为企业挑选最适配的产品成为一大难题。本文将通过对比主流服务商、梳理核心选择要素,助您轻松应对MFA选型的复杂挑战。
144 1
|
应用服务中间件 nginx 开发者
从 Docker Hub 拉取镜像受阻?这些解决方案帮你轻松应对
最近一段时间 Docker 镜像一直是 Pull 不下来的状态,感觉除了挂🪜,想直连 Docker Hub 是几乎不可能的。更糟糕的是,很多原本可靠的国内镜像站,例如一些大厂和高校运营的,也陆续关停了,这对我们这些个人开发者和中小企业来说是挺难受的。之前,通过这些镜像站,我们可以快速、方便地获取所需的 Docker 镜像,现在这条路也不行了。感觉这次动作不小,以后想直接访问 Docker Hub 是不可能了。所以我们得想办法搭建自己的私有镜像仓库。
从 Docker Hub 拉取镜像受阻?这些解决方案帮你轻松应对
|
11月前
|
固态存储 虚拟化 iOS开发
VMware ESXi 6.7U3u macOS Unlocker & OEM BIOS 2.7 集成 Realtek 网卡驱动和 NVMe 驱动 (集成驱动版)
VMware ESXi 6.7U3u macOS Unlocker & OEM BIOS 2.7 集成 Realtek 网卡驱动和 NVMe 驱动 (集成驱动版)
535 1
VMware ESXi 6.7U3u macOS Unlocker & OEM BIOS 2.7 集成 Realtek 网卡驱动和 NVMe 驱动 (集成驱动版)
|
安全 Java Linux
docker阿里云镜像加速
我们都知道因为某些原因我们访问外网都是比较慢的,比如我们使用maven下载依赖时是一个道理,同样的使用docker从docker.hub上下载镜像也是比较慢的。针对这种访问官网比较慢的情况有两种方案,第一种就是使用国内的仓库,第二种就是使用一个加速器。这里我们配置docker的镜像加速从来来实现提速。
14767 1
docker阿里云镜像加速
|
Linux
Could not fetch/save url http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoError 403
Could not fetch/save url http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoError 403
2397 1
|
关系型数据库 MySQL Linux
服务器脚本推荐,yum更新阿里镜像源、安装Docker、使用Docker安装MySQL服务
服务器脚本推荐,yum更新阿里镜像源、安装Docker、使用Docker安装MySQL服务
1425 1