作者:码农老庄
2024年端午假期的一件大事就是,放完假回来发现所有国内的知名公开镜像站的关闭,国内用户在使用Docker时遇到了更多困难。特别是企业用户影响很大,好多企业的自动化部署(CI/CD)不能用了,所以这几天已经出来许多解决办案了。
我试用了一下“技术爬爬虾”的“Docker Images Pusher”,希望能帮助到大家。
配置阿里云
登录阿里云容器镜像服务
https://cr.console.aliyun.com/
启用个人实例,创建一个命名空间(ALIYUN_NAME_SPACE),这里有个人实例和企业版实例,我们用免费的个人实例就可以
看一下个人和企业的区别
访问凭证–>获取环境变量
用户名(ALIYUN_REGISTRY_USER)密码(ALIYUN_REGISTRY_PASSWORD)仓库地址(ALIYUN_REGISTRY)
fork项目
https://github.com/tech-shrimp/docker_image_pusher
启动Action
进入您自己的项目,点击Action,启用Github Action功能
配置环境变量
进入Settings->Secret and variables->Actions->New Repository secret
将上一步的 ALIYUN_NAME_SPACE,ALIYUN_REGISTRY_USER,ALIYUN_REGISTRY_PASSWORD,ALIYUN_REGISTRY 的值配置成环境变量
添加镜像
打开images.txt文件,添加你想要的镜像,可以带tag,也可以不用(默认latest)
也可添加 –platform=xxxxx 的参数指定镜像架构
文件提交后,自动进入Github Action构建
使用镜像
回到阿里云,镜像仓库,点击任意镜像,可查看镜像状态。(可以改成公开,拉取镜像免登录)
在国内服务器pull镜像:
docker pull registry.cn-hangzhou.aliyuncs.com/shrimp-images/alpine
registry.cn-hangzhou.aliyuncs.com 即 ALIYUN_REGISTRY
shrimp-images 即 ALIYUN_NAME_SPACE
alpine 即阿里云中显示的镜像名
多架构
需要在images.txt中用 –platform=xxxxx手动指定镜像架构 指定后的架构会以前缀的形式放在镜像名字前面
镜像重名
程序自动判断是否存在名称相同, 但是属于不同命名空间的情况。 如果存在,会把命名空间作为前缀加在镜像名称前。 例如:
xhofe/alistxiaoyaliu/alist
定时执行
修改/.github/workflows/docker.yaml文件 添加 schedule即可定时执行(此处cron使用UTC时区)