Docker镜像转存到阿里云私有仓库

什么是 Docker Images Pusher ?

Docker Images Pusher 是一个 Docker 镜像转存工具。使用 Github Action 将国外的 Docker 镜像转存到阿里云私有仓库,供国内服务器使用,免费易用。

功能特点:

  • 支持 DockerHub, gcr.io, k8s.io, ghcr.io 等任意仓库;
  • 支持最大 40GB 的大型镜像
  • 使用阿里云的官方线路,速度快

官方提供了视频教程:https://www.bilibili.com/video/BV1Zn4y19743/

相比老苏之前介绍的基于 Cloudfalre 搭建的私有仓库,本方案不需要域名,速度也更快。至于部署难度,两者应该大致相当吧

文章传送门:基于Cloudflare搭建私有Docker镜像源

配置阿里云

登录阿里云容器镜像服务,地址:https://cr.console.aliyun.com

创建 个人实例

  • 地域:选择离自己近的地方,不过国内应该差别不大
  • 协议:需要勾选

需要 设置Registry登录密码,这个值就是 ALIYUN_REGISTRY_PASSWORD 的值

新建命名空间

  • ALIYUN_NAME_SPACE:命名空间,例如老苏设置的是 sh_laosu

获取凭证

  • ALIYUN_REGISTRY_USER:用户名
  • ALIYUN_REGISTRY_PASSWORD:密码
  • ALIYUN_REGISTRY:仓库地址

Fork 代码

第一步、你要用 Github 的账号,并登录你的 GitHub 账号

第二步、打开 Docker Images Pusher 项目的地址:https://github.com/tech-shrimp/docker_image_pusher

第三步、Fork 该项目

Create a new fork

fork 成功后

配置 Github Action

Settings –> Secrets and variables –> New repository secret

填入第一步配置阿里云时获取的环境变量

  • Name:填入环境变量名;
  • Secret:填入环境变量值;

依次添加 4 个环境变量

1
2
3
4
- ALIYUN_NAME_SPACE
- ALIYUN_REGISTRY
- ALIYUN_REGISTRY_USER
- ALIYUN_REGISTRY_PASSWORD

还需要启用 Actions

添加镜像

修改 images.txt 文件,替换成你想要转存的 docker 镜像

  • 可以加 tag,也可以不加 (默认为 latest);
  • 可添加 --platform=xxxxx 的参数指定镜像架构;
  • 可使用 k8s.gcr.io/kube-state-metrics/kube-state-metrics 格式指定私库;
  • 可使用 # 开头作为注释

按需要进行修改

文件提交后,自动进入 Github Action 构建

执行过程

执行完成

定时执行

如果希望定时拉取镜像,需修改 /.github/workflows/docker.yaml 文件,添加 schedule 即可定时执行

此处 cron 使用 UTC 时区

使用镜像

回到阿里云的镜像仓库,会看到转存后的镜像列表

进入详情页面,会有详细的操作指南

下面是一个示例

1
2
3
4
5
# 登录阿里云镜像仓库
docker login --username=你的阿里云账号 registry.cn-hangzhou.personal.cr.aliyuncs.com

# 从阿里云镜像仓库拉取镜像
docker pull registry.cn-hangzhou.personal.cr.aliyuncs.com/命名空间/镜像仓库名称:镜像版本号

第一次需要登录验证,密码就是 ALIYUN_REGISTRY_PASSWORD 的值

接下来应该就可以愉快的玩耍了

参考文档

tech-shrimp/docker_image_pusher: 使用Github Action将国外的Docker镜像转存到阿里云私有仓库,供国内服务器使用,免费易用
地址:https://github.com/tech-shrimp/docker_image_pusher

flyeric0212/aliyun-docker-image-mirror
地址:https://github.com/flyeric0212/aliyun-docker-image-mirror