为了账号安全,请及时绑定邮箱和手机立即绑定

如何正确验证 docker 客户端 golang 库到 gcr.io 注册表?

如何正确验证 docker 客户端 golang 库到 gcr.io 注册表?

Go
慕容708150 2023-07-26 17:39:08
我需要使用此包库以编程方式(使用 golang)登录 gcr.io docker 注册表https://godoc.org/github.com/docker/docker/client我尝试过使用它,我可以成功登录,但是在将图像推送到我的 gcr.io 项目注册表时,它说{"errorDetail":{"message":"unauthorized: You don't have the needed permissions to perform this operation, and you may have invalid credentials. To authenticate your request, follow the steps in: https://cloud.google.com/container-registry/docs/advanced-authentication"},"error":"unauthorized: You don't have the needed permissions to perform this operation, and you may have invalid credentials. To authenticate your request, follow the steps in: https://cloud.google.com/container-registry/docs/advanced-authentication"}您可以看一下该CopyImage方法,其中 被option.DestRegistryAuth分配了输出gcloud auth print-access-token。用户名设置为“oauth2accesstoken”,因为我遵循了以下说明: https ://cloud.google.com/container-registry/docs/advanced-authentication至于source参数,假设它来自公共注册表,如 docker.io/library/alpine:3.10,因此我们可以在不配置任何身份验证令牌的情况下提取它。但是对于dest参数,目前它是我的私人注册表中的图像,例如:asia.gcr.io/<gcp-project-id>/alpine:3.10另外,gcloud auth print-access-token在我这样做之后调用,gcloud auth login并且我已经拥有访问我的私人 asia.gcr.io 注册表的完全权限(在存储桶级别分配)。现在奇怪的是,我可以在此处描述docker push之后使用命令成功推送它https://cloud.google.com/container-registry/docs/advanced-authentication。docker login有什么建议吗?
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

事实证明,RegistryAuthtypes.ImagePush 选项中的 arg 需要一个 base64 编码字符串。

因此,使用此代码,我可以成功地将本地映像推送到我的私有注册表。

   authConfig := types.AuthConfig{

        Username: "oauth2accesstoken",

        Password: option.DestRegistryAuth,

    }

    encodedJSON, err := json.Marshal(authConfig)

    if err != nil {

        return fmt.Errorf("error when encoding authConfig. err: %v", err)

    }


    authStr := base64.URLEncoding.EncodeToString(encodedJSON)


    rc, err = destClient.DockerClient.ImagePush(ctx, dest, types.ImagePushOptions{

        RegistryAuth: authStr,

    })


查看完整回答
反对 回复 2023-07-26
  • 1 回答
  • 0 关注
  • 143 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信