每当我尝试将容器从本地计算机推送到 Google Container Registry 时,都会收到以下错误:
denied:无法访问存储库;请检查您是否有权访问它。
如果我打开 Cloud Shell,我可以毫无问题地推送容器。我已经尝试过几次“gcloud auth login”,但似乎没有什么区别。我在本地运行其他 gcloud 命令没有任何问题。任何帮助将不胜感激。
每当我尝试将容器从本地计算机推送到 Google Container Registry 时,都会收到以下错误:
denied:无法访问存储库;请检查您是否有权访问它。
如果我打开 Cloud Shell,我可以毫无问题地推送容器。我已经尝试过几次“gcloud auth login”,但似乎没有什么区别。我在本地运行其他 gcloud 命令没有任何问题。任何帮助将不胜感激。
其他遇到类似问题的客户仅供参考: https ://github.com/docker/docker/issues/22910
当前版本的 Docker 客户端(1.11、1.12)和在新安装上启用的默认凭据存储存在一个错误,这会破坏私有注册表。删除
"credsStore": "whatever"
来自您的 docker 配置(例如 ~/.docker/config.json)的字段并正在运行
gcloud docker ...
应该解决这个问题。
更新:
或者,我们已经实现了自己的凭证助手,它为我们的客户解决了问题(即不会因为 Docker 客户端用来请求凭证的 GCR URL 中缺少方案而绊倒)。要安装凭证助手:
gcloud components install docker-credential-gcr
或者docker-credential-gcr configure-docker
配置到 Docker 客户端你有运行 gcloud auth login 吗?
这听起来像 gcloud 可能不知道将您关联到哪个项目。
你可以跑
gcloud信息
验证 gcloud 正在使用哪个项目。
如果它没有列出您要在其下推送图像的项目,您可以使用 --project 标志指定它,例如
gcloud --project= docker push ...
要为 gcloud 设置默认项目,您可以运行
gcloud 配置集项目
我有同样的问题,直到我完全删除gcloud info
(安装和配置目录)下列出的文件夹然后重新安装 sdk 才解决它。
然后运行gcloud components install docker-credential-gcr
并设置备份。一切正常。
只是给出一个更新的答案:我想推送到 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
我在个人项目上尝试使用 GCP 时遇到了同样的问题:
查看 GCP 控制台中的活动选项卡显示我正在尝试使用我的专业电子邮件地址(项目不允许)推送,即使我只是使用我的个人电子邮件地址登录:
gcloud auth login
原因是几个月前我也运行了这个命令:
gcloud auth application-default login
用我的专业电子邮件地址。
我只需要再次运行它,使用我的个人地址登录,一切正常!