无法推送到 Google Container Registry(无法访问存储库)
Unable to Push to Google Container Registry (unable to access the repository)
每当我尝试将容器从我的本地计算机推送到 Google Container Registry 时,我都会收到以下错误:
denied: Unable to access the repository; please check that you have permission to access it.
如果我打开 Cloud Shell,我可以毫无问题地推送容器。我试过几次"gcloud auth login",但似乎没有什么区别。我在本地 运行 其他 gcloud 命令没有任何问题。任何帮助将不胜感激。
这听起来像是 gcloud 可能不知道将您关联为哪个项目。
你可以运行
gcloud info
验证 gcloud 使用的是哪个项目。
如果它没有列出您将图像推送到的项目,您可以使用 --project 标志指定它,例如
gcloud --project= docker push ...
要为 gcloud 设置默认项目,您可以 运行
gcloud config set project
你有运行 gcloud auth登录吗?
供其他客户参考 运行 类似问题:
https://github.com/docker/docker/issues/22910
当前版本的 Docker 客户端(1.11、1.12)和在新安装中启用的默认凭据存储存在一个错误,这会破坏私有注册表。删除
"credsStore": "whatever"
来自您的 docker 配置的字段(例如 ~/.docker/config.json)和 运行
gcloud docker ...
应该可以解决这个问题。
更新:
或者,我们实施了自己的凭据帮助程序,它解决了 我们客户 的问题(即不会因Docker 客户端用于请求凭据的 GCR URL)。
安装凭证助手:
- 下载辅助二进制文件并将其放在您的 PATH 中
gcloud components install docker-credential-gcr
或
- download/compile the binary from GitHub
- 执行
docker-credential-gcr configure-docker
配置到Docker客户端
只是为了给出更新的答案:我想推送到 eu.gcr.io。因此,我需要向 that 注册表进行身份验证(我花了一段时间才弄明白)。
首先:
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 控制台中的 activity 选项卡,我发现我正在尝试使用我的专业电子邮件地址进行推送(该项目不允许),即使我只是使用个人电子邮件地址登录也是如此:
gcloud auth login
原因是几个月前我也运行这个命令:
gcloud auth application-default login
使用我的专业电子邮件地址。
我只需要再次 运行 它,使用我的个人地址登录,一切正常!
我遇到了同样的问题,在我完全删除 gcloud info
(安装和配置目录)下列出的文件夹然后重新安装 sdk 之前,没有任何解决办法。
然后 运行 gcloud components install docker-credential-gcr
并进行备份。一切正常。
每当我尝试将容器从我的本地计算机推送到 Google Container Registry 时,我都会收到以下错误:
denied: Unable to access the repository; please check that you have permission to access it.
如果我打开 Cloud Shell,我可以毫无问题地推送容器。我试过几次"gcloud auth login",但似乎没有什么区别。我在本地 运行 其他 gcloud 命令没有任何问题。任何帮助将不胜感激。
这听起来像是 gcloud 可能不知道将您关联为哪个项目。
你可以运行
gcloud info
验证 gcloud 使用的是哪个项目。
如果它没有列出您将图像推送到的项目,您可以使用 --project 标志指定它,例如
gcloud --project= docker push ...
要为 gcloud 设置默认项目,您可以 运行
gcloud config set project
你有运行 gcloud auth登录吗?
供其他客户参考 运行 类似问题: https://github.com/docker/docker/issues/22910
当前版本的 Docker 客户端(1.11、1.12)和在新安装中启用的默认凭据存储存在一个错误,这会破坏私有注册表。删除
"credsStore": "whatever"
来自您的 docker 配置的字段(例如 ~/.docker/config.json)和 运行
gcloud docker ...
应该可以解决这个问题。
更新:
或者,我们实施了自己的凭据帮助程序,它解决了 我们客户 的问题(即不会因Docker 客户端用于请求凭据的 GCR URL)。 安装凭证助手:
- 下载辅助二进制文件并将其放在您的 PATH 中
gcloud components install docker-credential-gcr
或- download/compile the binary from GitHub
- 执行
docker-credential-gcr configure-docker
配置到Docker客户端
只是为了给出更新的答案:我想推送到 eu.gcr.io。因此,我需要向 that 注册表进行身份验证(我花了一段时间才弄明白)。
首先:
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 控制台中的 activity 选项卡,我发现我正在尝试使用我的专业电子邮件地址进行推送(该项目不允许),即使我只是使用个人电子邮件地址登录也是如此:
gcloud auth login
原因是几个月前我也运行这个命令:
gcloud auth application-default login
使用我的专业电子邮件地址。
我只需要再次 运行 它,使用我的个人地址登录,一切正常!
我遇到了同样的问题,在我完全删除 gcloud info
(安装和配置目录)下列出的文件夹然后重新安装 sdk 之前,没有任何解决办法。
然后 运行 gcloud components install docker-credential-gcr
并进行备份。一切正常。