使用 docker.io (hub.docker.com) 或其他镜像服务来提供(但不限于) gcr.io、registry.k8s.io、k8s.gcr.io、quay.io、ghcr.io 等国外镜像加速下载服务
为减少重复请求,合理利用资源,建议提前在 issues 中搜索镜像是否已转换过,可以直接复用
示例:issues搜索registry.k8s.io/kube-apiserver:v1.27.4
更多云原生技术可关注微信公众号:【gopher云原生】
方案一:白嫖我的,点个 Star ,直接提交 issues ,按照 issue 模板修改内容即可
要求:严格按照模板规范提交,参考: 成功案例
当任务失败时,可以查看失败原因并直接修改 issues 的内容,即可重新触发任务执行
限制:每次提交最多 11 个镜像地址(为啥是11个?因为我的第一次需求刚好要转换11个镜像🤣)
本人 Docker 账号有每日镜像拉取限额,请勿滥用
-
绑定账号
-
如果要使用默认的 hub.docker.com 镜像服务
在
Settings
-Secrets and variables
-Actions
选择New repository secret
新建DOCKER_USERNAME
(你的 Docker 用户名) 和DOCKER_TOKEN
(你的 Docker 密码) 两个 Secrets -
如果需要使用其它镜像服务,例如腾讯云、阿里云等
在
Settings
-Secrets and variables
-Actions
选择New repository secret
新建DOCKER_USERNAME
(你的其它镜像服务用户名) 和DOCKER_TOKEN
(你的其它镜像服务密码)以及DOCKER_REPOSITORY
三个 Secrets其中
DOCKER_REPOSITORY
配置例子:- 腾讯云:
ccr.ccs.tencentyun.com/xxxxxx
- 阿里云:
registry.cn-hangzhou.aliyuncs.com/xxxxxx
- 腾讯云:
-
-
在 Fork 的项目中开启
Settings
-General
-Features
中的Issues
功能 -
在 Fork 的项目中修改
Settings
-Actions
-General
中的Workflow permissions
为Read and write permissions
-
在
Issues
-Labels
选择New label
依次添加三个 label :hub-mirror
、success
、failure
-
在
Actions
里选择hub-mirror
,在右边···
菜单里选择Enable Workflow
-
在 Fork 的项目中提交 issues
$ go install github.com/togettoyou/hub-mirror@latest
$ hub-mirror --username=xxxxxx --password=xxxxxx --content='{ "hub-mirror": ["hello-world:latest"] }'
# 如果需要使用自定义镜像仓库
$ hub-mirror --username=xxxxxx --password=xxxxxx --repository=registry.cn-hangzhou.aliyuncs.com/xxxxxx --content='{ "hub-mirror": ["hello-world:latest"] }'
$ go get github.com/togettoyou/hub-mirror@latest
package main
import (
"context"
"fmt"
"os"
"github.com/togettoyou/hub-mirror/pkg"
)
func main() {
cli, err := pkg.NewCli(context.Background(), "", "xxx", "xxx", os.Stdout)
if err != nil {
panic(err)
}
output, err := cli.PullTagPushImage(context.Background(), "hello-world:latest")
if err != nil {
panic(err)
}
fmt.Println(output.Source, " ===> ", output.Target)
}