每当我尝试从本地计算机将容器推送到Google容器注册表时,我都会收到以下错误:
被拒绝:无法访问存储库;请检查您是否有权访问它。
如果我打开Cloud Shell,我可以毫无问题地推送容器。我曾多次尝试过“gcloud auth login”,似乎没有任何区别。我在本地运行其他gcloud命令没有任何问题。任何帮助将不胜感激。
答案 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)。 要安装凭据帮助程序:
"credsStore": "whatever"
或gcloud docker ...
以配置Docker客户端答案 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
用我的专业电子邮件地址。
我只需要再次运行它,使用我的个人地址登录,一切正常!