我正在尝试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 docker
但gcloud
没有安装在VM上(专用于容器)所以我认为它是其他的东西
此外,VM服务帐户具有对存储的读访问权限。有什么想法吗?
答案 0 :(得分:1)
从GCR docs,您可以使用docker-credential-gcr自动使用GCE实例元数据中的凭据进行身份验证。
手动执行此操作(假设您已安装curl
和jq
):
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上看到上传的图片;容器注册表 - >图像"