无法推送到Google容器注册表(无法访问存储库)

时间:2016-09-01 17:52:45

标签: google-container-registry

每当我尝试从本地计算机将容器推送到Google容器注册表时,我都会收到以下错误:

  

被拒绝:无法访问存储库;请检查您是否有权访问它。

如果我打开Cloud Shell,我可以毫无问题地推送容器。我曾多次尝试过“gcloud auth login”,似乎没有任何区别。我在本地运行其他gcloud命令没有任何问题。任何帮助将不胜感激。

6 个答案:

答案 0 :(得分:6)

对于遇到类似问题的其他客户,仅供参考: https://github.com/docker/docker/issues/22910

当前版本的Docker客户端(1.11,1.12)存在一个错误,以及在新安装上启用的默认凭据存储,这会破坏私有注册表。删除

/* Limits for the TIME data type */
#define TIME_MAX_HOUR 838
#define TIME_MAX_MINUTE 59
#define TIME_MAX_SECOND 59
#define TIME_MAX_VALUE (TIME_MAX_HOUR*10000 + TIME_MAX_MINUTE*100 + TIME_MAX_SECOND)
来自docker config的

字段(例如〜/ .docker / config.json)并运行

TIME

应解决问题。

<强>更新

或者,我们已经实施了我们自己的凭证帮助程序,解决了对我们的客户的问题(即由于GCR缺乏方案而无法解决问题) Docker客户端用于请求凭据的URL)。 要安装凭据帮助程序:

答案 1 :(得分:2)

您是否运行过gcloud auth登录?

答案 2 :(得分:1)

这听起来像gcloud可能不知道将您关联到哪个项目。

你可以运行

  

gcloud info

验证gcloud正在使用哪个项目。

如果它没有列出您正在推送图像的项目,可以使用--project标志指定它,如

  

gcloud --project = docker push ...

要设置gcloud的默认项目,您可以运行

  

gcloud config set project

答案 3 :(得分:1)

我有同样的问题,在我完全删除gcloud info(安装和配置目录)下列出的文件夹然后重新安装sdk之前,没有解决任何问题。

然后运行gcloud components install docker-credential-gcr并将其设置为备份。一切正常。

答案 4 :(得分:0)

只是给出一个更新的答案:我想推送到eu.gcr.io.因此,我需要对 注册表进行身份验证(花了一些时间才弄清楚)。

首先:

docker login -e 1234@5678.com -u oauth2accesstoken -p "$(gcloud auth print-access-token)" https://eu.gcr.io

第二

 gcloud docker -- push eu.gcr.io/myProjectName/myComputeMachineName

在Windows 10 pro(在Hyper-V上)和这些版本上使用cygwin:

$ gcloud --version
Google Cloud SDK 148.0.0
bq 2.0.24
bq-nix 2.0.24
core 2017.03.17
core-nix 2017.02.28
gcloud
gcloud-deps 2017.02.28
gcloud-deps-linux-x86_64 2017.02.28
gsutil 4.23
gsutil-nix 4.22

$ docker --version
Docker version 17.03.1-ce-rc1, build 3476dbf

答案 5 :(得分:0)

在尝试在个人项目中使用GCP时遇到了同样的问题:

查看GCP控制台中的活动选项卡向我显示,即使我刚刚使用我的个人电子邮件地址登录,我也试图使用我的专业电子邮件地址(项目中不允许):

gcloud auth login 

原因是几个月前我也跑了这个命令:

gcloud auth application-default login

用我的专业电子邮件地址。

我只需要再次运行它,使用我的个人地址登录,一切正常!