go-containerregistry package 列出所有项目/组织的 GCR 存储库
go-containerregistry package lists GCR repositories from all projects / organizations
我正在使用以下代码列出我的 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
,但调用上述程序将列出 ALL 回购 ALL 个组织和 ALL 个项目我的 gcloud
有权访问。
有没有办法限制上面的代码,使其列出特定 org/project 的 gcr 存储库?
请注意,gcloud config set project
仅适用于 gcloud
(CLI) 命令,不适用于 SDK。
好像这个SDK只实现了DockerAPI,不理解项目的概念。这里的建议是迁移到Artifact Registry. You could easily get a list of the repos of a particular project using the list method of the REST Resource projects.locations.repositories
。在这里您可以找到一个 HTTP GET 示例:
GET /v1beta2/{parent=projects/*/locations/*}/repositories
创建和编辑此答案是为了让社区更清楚地看到评论中给出的解决方案。
我正在使用以下代码列出我的 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
,但调用上述程序将列出 ALL 回购 ALL 个组织和 ALL 个项目我的 gcloud
有权访问。
有没有办法限制上面的代码,使其列出特定 org/project 的 gcr 存储库?
请注意,gcloud config set project
仅适用于 gcloud
(CLI) 命令,不适用于 SDK。
好像这个SDK只实现了DockerAPI,不理解项目的概念。这里的建议是迁移到Artifact Registry. You could easily get a list of the repos of a particular project using the list method of the REST Resource projects.locations.repositories
。在这里您可以找到一个 HTTP GET 示例:
GET /v1beta2/{parent=projects/*/locations/*}/repositories
创建和编辑此答案是为了让社区更清楚地看到评论中给出的解决方案。