zz-open / hub-mirror

加速国外镜像下载
MIT License
1 stars 1 forks source link

hub-mirror

加速国外镜像,例如gcr.io、registry.k8s.io、k8s.gcr.io、quay.io、ghcr.io等

为避免重复工作,使用前建议在issue中搜索是否已转换

示例:issues搜索gcc:latest

原理

调用docker sdk 进行 pull,tag,push等操作

如何使用

方案一:直接使用本项目,点个 Star ,提交issue即可

当任务失败时,可以查看失败原因并直接修改 issues 的内容,即可重新触发任务执行

限制:每次提交最多 20 个镜像地址,避免超时

本人 使用阿里云容器镜像服务免费存储,请勿滥用

方案二:Fork 本项目,绑定你自己的云服务账号

1. 绑定账号

Settings-Secrets and variables-Actions 选择 New repository secret 新建

阿里云: registry.cn-hangzhou.aliyuncs.com/xxx


#### 2. 在 Fork 的项目中开启 `Settings`-`General`-`Features` 中的 `Issues` 功能

#### 3. 在 Fork 的项目中修改 `Settings`-`Actions`-`General` 中的 `Workflow permissions` 为 `Read and write permissions`

#### 4. 在 `Issues`-`Labels` 选择 `New label` 依次添加三个 label :`hub-mirror`、`success`、`failure`

#### 5. 在 `Actions` 里选择 `hub-mirror` ,在右边 `···` 菜单里选择 `Enable Workflow`

#### 6. 在 Fork 的项目中提交 issues
```json
[
    {
        "mirrors": [
            "格式:原始镜像$自定义镜像名:自定义标签名",
            "$ 为分隔符,左边为原始镜像,右边为自定义镜像",
            "以下是三个正确示例",
            "gcc:latest",
            "gcc:latest$mygcc",
            "gcc:latest$mygcc:v1.0.0",
            "注意:mirrors 标签必选,标题随意,默认每次最多支持转换 20 个镜像",
            "无效的镜像会忽略, 请确保 json 格式是正确的"
        ],
        "platform": ""
    }
]

例如:

[
    {
        "mirrors": [
             "gcc:latest$mygcc-arm64:v1.0.0"
        ],
        "platform": "linux/arm64"
    }
    {
        "mirrors": [
            "gcc:latest$mygcc-amd64:v1.0.0"
        ],
        "platform": "linux/amd64"
    }
]

没有不同架构平台需求,不需要platform参数

方案三:克隆代码到本地,(适合本地有'魔法'的同学使用,可以灵活修改)

修改conf.yaml文件,填入要转换的镜像

执行

go run main.go \
--username='xxx' \
--password='xxx' \
--server='registry.cn-hangzhou.aliyuncs.com/zzimage' \
--rawcontent='[{"mirrors": ["gcc:latest$mygcc:v1.0.0"],"platform": "linux/amd64"}]'

如果嫌弃json字符串太长,也可将rawcontent配置成yaml,例如conf.yaml,然后指定-f参数即可

go run main.go \
--username='xxx' \
--password='xxx' \
--server='registry.cn-hangzhou.aliyuncs.com/zzimage' \
-f=./conf.yaml

workflow 参考