将容器从Google容器注册表部署到计算引擎VM

时间:2018-01-03 20:43:19

标签: google-cloud-platform google-compute-engine google-container-registry

我正在尝试deploy a container on a Google VM instance。 从doc看起来很简单:在容器文本字段中指定您的图像并启动VM。

我的图片存储在与Google相同的项目中的Google容器注册表中。但是,VM启动但不会拉动并运行docker镜像。我搜索了VM,docker images ls返回一个空列表。

拉动图像不起作用。

~ $ docker pull gcr.io/project/image
Using default tag: latest
Error response from daemon: repository gcr.io/project/image not found: does not exist or no pull access

我知道我们应该使用gcloud dockergcloud没有安装在VM上(专用于容器)所以我认为它是其他的东西

此外,VM服务帐户具有对存储的读访问权限。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

GCR docs,您可以使用docker-credential-gcr自动使用GCE实例元数据中的凭据进行身份验证。

手动执行此操作(假设您已安装curljq):

TOKEN=$(curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" -H "Metadata-Flavor: Google" | jq -r ".access_token")
docker login -u oauth2accesstoken -p "$TOKEN" https://gcr.io

答案 1 :(得分:0)

要从gcr.io容器注册表中提取图像,您可以使用gcloud sdk,如下所示:

$ gcloud docker -- pull gcr.io/yrmv-191108/autoscaler

或者你可以像你一样直接使用docker二进制文件。此命令与前一个gcloud具有相同的效果:

$ docker pull gcr.io/yrmv-191108/autoscaler

基本上你的问题是你没有指定你正在工作的项目或你想要拉的图像,除非(非常不可能)你的项目ID是项目和你想要的图像pull命名为 image

您可以通过以下方式获取已上传到当前项目的图像列表:

$ gcloud container images list

对我而言,得到:

NAME
gcr.io/yrmv-191108/autoscaler
gcr.io/yrmv-191108/kali
Only listing images in gcr.io/yrmv-191108. Use --repository to list images in other repositories.

如果由于某种原因您无权安装Gcloud SDK(非常适合使用Google Cloud),您可以通过导航到&#34在Google Cloud GUI上看到上传的图片;容器注册表 - >图像"