如何将容器推送到Google容器注册表(无法创建存储库)

时间:2016-07-09 20:38:41

标签: windows docker kubernetes google-cloud-platform google-container-registry

编辑:我只是将此归咎于平台不一致。我现在已经放弃了推向Google Cloud Container Registry的工作,并创建了一个Ubuntu虚拟机,我正在这样做。由于前面提到的原因,我也投票决定关闭这个问题,并且因为首先应该在服务器故障上提出这个问题。感谢大家的帮助!

运行$ gcloud docker push gcr.io/kubernetes-test-1367/myapp会导致:

The push refers to a repository [gcr.io/kubernetes-test-1367/myapp]
595e622f9b8f: Preparing
219bf89d98c1: Preparing
53cad0e0f952: Preparing
765e7b2efe23: Preparing
5f2f91b41de9: Preparing
ec0200a19d76: Preparing
338cb8e0e9ed: Preparing
d1c800db26c7: Preparing
42755cf4ee95: Preparing
ec0200a19d76: Waiting
338cb8e0e9ed: Waiting
d1c800db26c7: Waiting
42755cf4ee95: Waiting
denied: Unable to create the repository, please check that you have access to do so.

$ gcloud init导致:

Welcome! This command will take you through the configuration of gcloud.

Settings from your current configuration [default] are:
[core]
account = <my_email>@gmail.com
disable_usage_reporting = True
project = kubernetes-test-1367
Your active configuration is: [default]

注意:这是Kubernetes: Unable to create repository的副本,但我尝试了他的解决方案并没有帮助我。我尝试追加:v1/v1,并使用us.gcr.io

编辑:其他信息

$ gcloud --version
Google Cloud SDK 116.0.0

bq 2.0.24
bq-win 2.0.18
core 2016.06.24
core-win 2016.02.05
gcloud
gsutil 4.19
gsutil-win 4.16
kubectl
kubectl-windows-x86_64 1.2.4
windows-ssh-tools 2016.05.13

+

$ gcloud components update

All components are up to date.

+

$ docker -v
Docker version 1.12.0-rc3, build 91e29e8, experimental

8 个答案:

答案 0 :(得分:2)

您使用的是什么版本的gcloud和Docker?

查看您的请求,似乎Docker客户端没有附加凭据,这可以解释访问拒绝。

我建议运行gcloud components update并查看问题是否重现。如果仍然如此,请随时gcr-contact google.com与我们联系,以便我们帮助您调试问题并解决问题。

答案 1 :(得分:2)

我仍无法从本地计算机上推送泊坞窗图像,但是使用我的帐户授权计算实例并从中推送图像。如果您遇到此问题,我建议您创建一个Compute Engine实例(为您自己),授权一个可以推送容器的gcloud auth帐户,并从那里推送。我在Git存储库中有我的源代码,我可以从中获取代码。

答案 2 :(得分:2)

项目的first image push requires admin rights。我在尝试将一个新容器推送到GCR进行团队项目时遇到了同样的问题。

您可能还想查看docker-credential-gcr。希望有所帮助。

答案 3 :(得分:1)

感谢您添加Docker版本信息。将Docker降级到更稳定的版本(例如1.11.2)是否有帮助?你有没有运行#docker-machine upgrade&#39;?

答案 4 :(得分:0)

您似乎在尝试从Google Compute Engine实例运行gcloud docker push而没有对Google云端存储的适当安全范围的读/写访问权限(Google Container Registry存储的位置)场景后面的容器图像。)

尝试创建另一个实例,但这次具有适当的访问范围,即:

gcloud compute --project "kubernetes-test-1367" instances create "test" --zone "us-east1-b" --machine-type "n1-standard-1" --network "default" --scopes default="https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring.write","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management","https://www.googleapis.com/auth/devstorage.full_control" --image "/debian-cloud/debian-8-jessie-v20160629" --boot-disk-size "10" --boot-disk-type "pd-standard" --boot-disk-device-name "test-1"

创建新实例后,ssh进入该实例,然后尝试重新运行gcloud docker push gcr.io/kubernetes-test-1367/myapp命令

答案 5 :(得分:0)

我检查了

gcloud auth list

看我的申请是有效帐户,而不是我的个人Google帐户。设置后

gcloud config set account example@gmail.com

我能够推

gcloud docker -- push eu.gcr.io/$PROJECT_ID/my-docker:v1

所以我可以继续http://kubernetes.io/docs/hellonode/

答案 6 :(得分:0)

我遇到了类似的问题,事实证明我必须为项目启用结算功能。如果您拥有新的Google Cloud帐户,则只能通过结算启用这么多项目。一旦我做到了,它就有用了。

答案 7 :(得分:0)

这也可能是造成这个问题的原因(在我的情况下):

Update B SET Status = 1 From Table_B as B INNER JOIN Table_A as A ON A.Pid = B.Pid WHERE B.Status = 0

来源:https://pinrojas.com/2016/09/12/your-personal-kubernetes-image-repo-in-a-few-steps-gcr-io/