解决无法下载国外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

浙公网安备 33010602011771号