加速国外镜像,例如gcr.io、registry.k8s.io、k8s.gcr.io、quay.io、ghcr.io等
为避免重复工作,使用前建议在issue中搜索是否已转换
调用docker sdk 进行 pull,tag,push等操作
当任务失败时,可以查看失败原因并直接修改 issues 的内容,即可重新触发任务执行
限制:每次提交最多 20 个镜像地址,避免超时
本人 使用阿里云容器镜像服务免费存储,请勿滥用
在 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 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