解决无法下载国外DockerHub镜像:Github-Action下载国外镜像推送到阿里云私有仓库

利用Github的Action功能将国外DockerHub仓库的镜像下载并推送到阿里云私有仓库

目的:将Docker Hub上(国内无法下载)的镜像变成可以在本地直接拉取的镜像地址

参考链接:https://blog.csdn.net/weixin_44924918/article/details/139711325

实现简述:

前提:已有Github、阿里云账号

① 开通阿里云容器镜像服务(提供一个国内可拉取的镜像仓库地址)

② Fork开源项目代码到自己仓库(实际工作流)

③ 启用 Action 功能,并配置环境变量(配置好访问凭证)

④ 修改镜像清单——images.txt,提交/commit

⑤ 提交后会自动触发Action,自动拉取DocerHub并推送到阿里云仓库上,到阿里云容器镜像仓库上查看即可

登录阿里云容器镜像服务

(如果没有阿里云“容器镜像服务”,可以开通一个“个人版”来用)

这里需要收集阿里云容器镜像的 基本信息 用于Github把镜像推送上来——配置为环境变量作为推送镜像时的访问凭证

命名空间: ALIYUN_NAME_SPACE (容器镜像的命名空间,相当于在阿里云镜像仓库中的标识;如果没有可以创建一个,注意要公开)
用户名: ALIYUN_REGISTRY_USER (阿里云登录用户名)
密码:ALIYUN_REGISTRY_PASSWORD (阿里云登录密码)
仓库地址:ALIYUN_REGISTRY (阿里云镜像仓库地址,例:registry.cn-guangzhou.aliyuncs.com)

Fork 项目 [docker_image_pusher]

Fork地址:https://github.com/tech-shrimp/docker_image_pusher

登录github,把项目Fork过来

启用Github的Action功能

配置环境变量

把上面收集的基本信息配置为环境变量

Settings -> Secret and variables -> Actions -> New Repository secret

工作流试运行

编辑 images.txt 文件,写入镜像名称,提交/commit

切到Action,可以看到对应工作流正在运行

查看运行情况(可以看看具体的工作流程)

回阿里云镜像仓库:nginx镜像已经推送到阿里云私有仓库

验证:

(随便找台通外网的机器)

用法: docker pull [仓库地址]/[命名空间]/[image_name/镜像名称]:[tag],示例:

[root@tmp_20241028 ~]# docker pull  registry.cn-guangzhou.aliyuncs.com/cumybride/nginx:1.21.0
1.21.0: Pulling from cumybride/nginx
b4d181a07f80: Pull complete 
edb81c9bc1f5: Pull complete 
b21fed559b9f: Pull complete 
03e6a2452751: Pull complete 
b82f7f888feb: Pull complete 
5430e98eba64: Pull complete 
Digest: sha256:2f1cd90e00fe2c991e18272bb35d6a8258eeb27785d121aa4cc1ae4235167cfd
Status: Downloaded newer image for registry.cn-guangzhou.aliyuncs.com/cumybride/nginx:1.21.0
registry.cn-guangzhou.aliyuncs.com/cumybride/nginx:1.21.0
posted @ 2025-05-08 18:09  cumybride  阅读(259)  评论(0)    收藏  举报