Go-tainer注册表包列出来自所有项目/组织的GCR存储库 [英] go-containerregistry package lists GCR repositories from all projects / organizations
本文介绍了Go-tainer注册表包列出来自所有项目/组织的GCR存储库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用以下代码列出我的docker
GCR中可用的存储库
package main
import (
"context"
"fmt"
"log"
"github.com/google/go-containerregistry/pkg/authn"
gcr "github.com/google/go-containerregistry/pkg/name"
"github.com/google/go-containerregistry/pkg/v1/google"
"github.com/google/go-containerregistry/pkg/v1/remote"
)
func main() {
auth, err := google.NewGcloudAuthenticator()
if err != nil {
log.Fatal(err)
}
fmt.Println(auth)
registry, err := gcr.NewRegistry("gcr.io")
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
repos, err := remote.Catalog(ctx, registry, remote.WithAuthFromKeychain(authn.DefaultKeychain))
if err != nil {
log.Fatal(err)
}
for _, repoName := range repos {
fmt.Println(repoName)
}
}
问题是,尽管我对特定项目执行了显式gcloud config set project
,但调用上述程序将列出所有组织和我的gcloud
有权访问的所有项目的所有报告。
是否有办法限制上面的代码,使其列出特定组织/项目的GCR报告?
推荐答案
请注意,gcloud config set project
仅适用于gcloud
(命令行界面)命令,而不适用于SDK。
该SDK似乎只实现了Docker接口,并不理解项目的概念。这里的建议是迁移到Artifact Registry。您可以使用REST资源projects.locations.repositories
的List方法轻松地获取特定项目的repos列表。您可以在这里找到一个HTTP GET示例:
GET /v1beta2/{parent=projects/*/locations/*}/repositories
创建和编辑此答案是为了使社区更容易看到评论中提供的解决方案。
这篇关于Go-tainer注册表包列出来自所有项目/组织的GCR存储库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文