可以通过以下步骤实现:
import (
"context"
"fmt"
"log"
"cloud.google.com/go/container"
"google.golang.org/api/option"
)
func createClient() (*container.Client, error) {
ctx := context.Background()
keyFile := "path/to/keyfile.json" // 替换为你的密钥文件路径
client, err := container.NewClient(ctx, option.WithCredentialsFile(keyFile))
if err != nil {
return nil, err
}
return client, nil
}
func listRepositories() {
client, err := createClient()
if err != nil {
log.Fatal(err)
}
defer client.Close()
ctx := context.Background()
projectID := "your-project-id" // 替换为你的项目ID
repositories, err := client.ProjectFromID(ctx, projectID).Repositories(ctx)
if err != nil {
log.Fatal(err)
}
fmt.Println("Repositories in GCR:")
for _, repo := range repositories {
fmt.Println(repo)
}
}
确保替换代码中的"your-project-id"为你的Google Cloud项目ID。
完整的代码示例如下:
package main
import (
"context"
"fmt"
"log"
"cloud.google.com/go/container"
"google.golang.org/api/option"
)
func createClient() (*container.Client, error) {
ctx := context.Background()
keyFile := "path/to/keyfile.json" // 替换为你的密钥文件路径
client, err := container.NewClient(ctx, option.WithCredentialsFile(keyFile))
if err != nil {
return nil, err
}
return client, nil
}
func listRepositories() {
client, err := createClient()
if err != nil {
log.Fatal(err)
}
defer client.Close()
ctx := context.Background()
projectID := "your-project-id" // 替换为你的项目ID
repositories, err := client.ProjectFromID(ctx, projectID).Repositories(ctx)
if err != nil {
log.Fatal(err)
}
fmt.Println("Repositories in GCR:")
for _, repo := range repositories {
fmt.Println(repo)
}
}
func main() {
listRepositories()
}
请确保将代码中的"path/to/keyfile.json"替换为你的Google Cloud服务账号密钥文件的实际路径,"your-project-id"替换为你的Google Cloud项目ID。
这样,当你运行这段代码时,它将通过Google Container Registry API列出GCR中的docker存储库。
领取专属 10元无门槛券
手把手带您无忧上云