hub-mirror

command module
v0.0.0-...-2c30e2a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 7, 2024 License: MIT Imports: 1 Imported by: 0

README

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 新建

  • 如果要使用默认的 hub.docker.com 镜像服务 以下secret必需创建
DOCKER_LOGIN_USERNAME: 用户名
DOCKER_LOGIN_PASSWORD: 密码
  • 如果需要使用其它镜像服务,例如腾讯云、阿里云等 以下secret必需创建
DOCKER_LOGIN_USERNAME: 用户名
DOCKER_LOGIN_PASSWORD: 密码
DOCKER_LOGIN_SERVER: 仓库地址

DOCKER_LOGIN_SERVER 示例:

腾讯云: `hkccr.ccs.tencentyun.com/xxx`

阿里云: `registry.cn-hangzhou.aliyuncs.com/xxx`
2. 在 Fork 的项目中开启 Settings-General-Features 中的 Issues 功能
3. 在 Fork 的项目中修改 Settings-Actions-General 中的 Workflow permissionsRead and write permissions
4. 在 Issues-Labels 选择 New label 依次添加三个 label :hub-mirrorsuccessfailure
5. 在 Actions 里选择 hub-mirror ,在右边 ··· 菜单里选择 Enable Workflow
6. 在 Fork 的项目中提交 issues
[
    {
        "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 参考

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL