gcloud - 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 来避免这种情况. 我感谢那些试图提供帮助的人的努力,但现在它还没有坏,所以我不会尝试修复它。
解决方案
我遇到了同样的问题:Cloud Run 似乎对它可以提取的清单类型很挑剔。
通过构建我的图像--format docker
并使用它们推送它们(受此问题--remove-signatures
的启发),podman 将创建 docker 样式的清单并将其推送到 Container Registry,并且一切运行顺利!
太糟糕了,我花了很多时间认为这是缺少权限问题
推荐阅读
- java - 如何在不点击屏幕的情况下放置对象?
- javascript - Javascript find() 方法不适用于嵌套对象/数组/json 值
- r - 即使安装在 Ubuntu (20.04) 上也无法打开 R (4.0.3) - 致命错误:无法打开基础包
- c# - EF Core 5.0 中的 TruncateDecimalsToScale 等价物是什么?
- c++ - 无法在 Visual Studio Code 中为 C++ 初始化向量
- c - 在微控制器运行时更新符号表
- installation - 如何在没有 brew 的情况下在 macOS Catalina 下安装 libgd?
- java - 没有连接到数据库?org.hibernate.HibernateException:没有可用连接时必须设置“hibernate.dialect”
- reactjs - 我希望页面仅在验证成功时才路由到另一个页面
- python-3.x - Keras:没有为任何变量提供渐变