首页 > 解决方案 > GCR Cloud Run 说“找不到图像 [名称]”

问题描述

我正在尝试使用 podman(而不是 Docker)和 Google Cloud Run 迈出我的第一步。我设法用gcr.io标签构建了一个图像并将其推送到谷歌。然后我创建一个新服务,我可以在“选择图像 URL”弹出对话框中选择图像。但随后服务无法启动,显示“找不到图像 [全名]”。

我在 Google 的支持页面或其他任何地方都找不到任何东西。我可以拉出图像,可以推送新版本,它们会出现在弹出对话框中。但是该服务仍然报告找不到它们。

我究竟做错了什么?

编辑以回答以下 DazWilkin 的问题:

可以使用 Docker 在本地运行 podman 创建的容器吗?

我无法在本地运行 Docker,因为它与 Fedora 31(因此是 podman)不兼容。但我可以使用在本地运行它podman run

您可以在 Cloud Run 中部署 Docker 创建的容器吗?

如上:F31。然而,podman 应该是一个替代品。

容器注册表是否与 Cloud Run 在同一个项目中?

是的。我确实遇到了问题,但我收到的是权限消息,而不是“未找到”。

您是否尝试过通过 gcloud 而不是控制台进行部署?

是的。

$ podman push eu.gcr.io/my-project/hs-hello-world
Getting image source signatures
Copying blob c7f3d2e0289b done  
Copying blob def7032cea8e done  
Copying config f1c2e2615f done  
Writing manifest to image destination
Storing signatures

$ gcloud run deploy --image eu.gcr.io/my-project/hs-hello-world --platform managed
Service name (hs-hello-world):  
Deploying container to Cloud Run service [hs-hello-world] in project [my-project] region [europe-west1]
X Deploying... Image 'eu.gcr.io/my-project/hs-hello-world' not found.                     
  X Creating Revision... Image 'eu.gcr.io/my-project/hs-hello-world' not found.           
  . Routing traffic...                                                                             
Deployment failed                                                                                  
ERROR: (gcloud.run.deploy) Image 'eu.gcr.io/my-project/hs-hello-world' not found.

当我使用 Google 构建的容器时,它运行良好。

更新:2020 年 3 月 5 日

最后我只是继续使用谷歌构建服务,它工作正常。我最初希望本地构建在很大程度上是因为在 Google 上构建需要半个多小时(要导入大量 Haskell 库),但现在我已经弄清楚如何使用分阶段构建和多处理器 VM 来避免这种情况. 我感谢那些试图提供帮助的人的努力,但现在它还没有坏,所以我不会尝试修复它。

标签: gcloud

解决方案


我遇到了同样的问题:Cloud Run 似乎对它可以提取的清单类型很挑剔。

通过构建我的图像--format docker并使用它们推送它们(受此问题--remove-signatures的启发),podman 将创建 docker 样式的清单并将其推送到 Container Registry,并且一切运行顺利!

太糟糕了,我花了很多时间认为这是缺少权限问题


推荐阅读