我需要使用此包库以编程方式(使用 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
有什么建议吗?
喵喵时光机
相关分类