我想獲取我在特定專案中上傳的所有 docker 影像的串列。
我正在使用官方 SDK https://pkg.go.dev/cloud.google.com/go
據我了解,串列應該在容器模塊下。但是,我找不到任何可以達到目的的名為 ListImages 或 ListRepositories 的方法。
我檢查了 artifactregistry 模塊,但它似乎只在我將影像推送到工件注冊表的情況下才有用。
在 golang 中獲取 docker 影像串列(專案明智)的正確方法是什么?
uj5u.com熱心網友回復:
我認為我們沒有容器注冊表的客戶端庫。因為它至少是根據這個執行緒的 Docker Registry API 的實作
您是否嘗試過使用注冊表包?https://pkg.go.dev/github.com/docker/docker/registry
對于存盤庫,您可以使用主機名/專案 ID。其中主機名是 gcr.io 或 eu.gcr.io 或 us.gcr.io,具體取決于您在 GCR 中的存盤庫的配置方式。
uj5u.com熱心網友回復:
golang方法(運行后測驗:)gcloud auth configure-docker:
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 _, repo := range repos {
fmt.Println(repo)
}
}
回復:
&{0xc0000000}
project-id/imagename
REST API 方法:
您可以像這樣列出影像(將 gcr.io 替換為您的 gcr 端點,例如 gcr.io、us.gcr.io、asia.gcr.io 等):
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://gcr.io/v2/_catalog"
回復:
{"repositories":["project-id/imagename"]}
您可以從以下鏈接中找到有關獲取令牌的一些相關詳細資訊: How to list images and tags from the gcr.io Docker Registry using the HTTP API?
PS:如果您可以訪問多個專案,則必須從回應中過濾掉專案特定的影像
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/409655.html
標籤:
