从项目注册表访问Docker容器

从项目注册表访问Docker容器,docker,google-cloud-platform,google-compute-engine,Docker,Google Cloud Platform,Google Compute Engine,所以我把我的docker图像上传到我的项目注册表。我可以导航到,我看到我的图像列在那里 现在我想在这个项目上运行一个VM,在这个项目上使用docker来运行这个映像 这是我的虚拟机中的命令: sudo /usr/bin/docker run eu.gcr.io/my-project-name/example001 答复是: Unable to find image 'eu.gcr.io/.../example001:latest' locally /usr/bin/docker: Error

所以我把我的docker图像上传到我的项目注册表。我可以导航到,我看到我的图像列在那里

现在我想在这个项目上运行一个VM,在这个项目上使用docker来运行这个映像

这是我的虚拟机中的命令:

sudo /usr/bin/docker run eu.gcr.io/my-project-name/example001
答复是:

Unable to find image 'eu.gcr.io/.../example001:latest' locally
/usr/bin/docker: Error response from daemon: unauthorized: You don't have the needed permissions to perform this op
eration, and you may have invalid credentials. To authenticate your request, follow the steps in: https://cloud.goo
gle.com/container-registry/docs/advanced-authentication.
See '/usr/bin/docker run --help'.
请参阅所附图片。如果我将“eu.gcr.io/…”定义为我的项目路径,我可以列出我的图像。但是,机器似乎在“.gcr.io”上运行,因此无法访问我的映像?我该如何解决这个问题?为什么我的图像显示在“eu.gcr.io”上,而机器显示在“.gcr.io”上?我找不到改变这个问题的方法(将图像移动到gcr.io或将机器移动到,eu.gcr.io)。但是我不确定这是否是问题所在

可能是docker的身份验证问题? 虚拟机基本上不能在“.gcr.io”上运行,它可以在非欧洲地区/区域运行,但这应该不是问题

从GCP访问控制的角度来看,注册表只是一个bucket。 所以我相信你们需要检查的第一件事是VM是否可以访问Google云存储。 使用gcloud:

gcloud compute instances describe <instance-name>

正如您提到的文件中所述:

答案如下:


需要授权的是docker命令。这里的问题不是主机名(eu.gcr.io)。我使用“gcloud docker--pull…”命令从存储库中获取映像,以便在我的虚拟机中使用。

在GCP上创建linux虚拟机后,通过SSH连接到它,您必须使用云SDK(带脚本)或手动安装Google SDK

如果您正在运行Ubuntu,请遵循文档如果您正在使用Red Hat或CentOS进行安装,请在完成Google SDK后遵循文档,您必须运行gcloud init来初始化SDK,只需打开终端和磁带[gcloud init],您必须配置您的配置文件。之后,您必须安装Docker

  • sudo apt get-y安装docker ce
  • sudo systemctl启动docker
您需要有权访问您将要推送到和从中拉出的注册表

已将Docker配置为使用gcloud作为凭据助手。要使用,请运行以下命令:

  • gcloud auth配置docker
之后,您可以使用docker在注册表上拉取或推送图像,如下所示:

Push:gcloud docker——Push gcr.io/google containers/示例图像:latest

pull:gcloud docker——pull gcr.io/google containers/示例图像:latest

serviceAccounts: - email: ...-compute@developer.gserviceaccount.com scopes: - https://www.googleapis.com/auth/devstorage.read_only - ...
gcloud auth configure-docker