You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在GCR/GAR中签名Docker镜像遇错误,求解决方案

在Google Cloud GCR/GAR中签名Docker镜像的可行方案

你遇到的问题是因为docker trust依赖的Notary服务与Google Cloud的容器仓库(GCR/GAR)没有官方集成,默认Notary服务器无法识别Google Cloud项目,因此触发报错。以下是Google官方支持的两种镜像签名方案:

方法一:使用Cosign(推荐)

Cosign是CNCF开源工具,Google官方支持用于GCR/GAR的镜像签名,操作简单且支持无密钥模式:

  • 安装Cosign:
    • macOS:brew install cosign
    • 通用方式:下载对应系统的二进制文件,或通过Go安装:go install github.com/sigstore/cosign/v2/cmd/cosign@latest
  • 登录容器仓库:
    • GAR:gcloud auth configure-docker <你的区域>-docker.pkg.dev
    • GCR:gcloud auth configure-docker gcr.io
  • 签名镜像:
    • 无密钥模式(推荐,基于Google账号身份):直接执行cosign sign <镜像地址>:<标签>,会自动跳转至Google账号完成身份验证,无需本地存储密钥
    • 密钥对模式:先生成密钥对cosign generate-key-pair,再执行cosign sign --key cosign.key <镜像地址>:<标签>
  • 验证签名:
    • 无密钥模式:cosign verify <镜像地址>:<标签>
    • 密钥对模式:cosign verify --key cosign.pub <镜像地址>:<标签>

方法二:使用Google Cloud Binary Authorization

适合需要与Google Cloud部署策略深度集成的场景(比如限制只有签名镜像能部署到GKE):

  1. 启用API:在Google Cloud控制台启用Binary Authorization API和Container Analysis API
  2. 创建签名密钥:在Cloud KMS中创建不对称密钥对(推荐RSA-SHA256算法)
  3. 获取镜像摘要:gcloud artifacts docker images describe <镜像地址>:<标签> --format='value(image_summary.digest)'
  4. 生成镜像签名:gcloud container binauthz signatures create --keyversion projects/<项目ID>/locations/<区域>/keyRings/<密钥环名>/cryptoKeys/<密钥名>/cryptoKeyVersions/<版本号> --artifact-url <镜像地址>@<刚才获取的摘要>
  5. 配置Binary Authorization策略,设置只有携带有效签名的镜像才能通过部署校验

内容的提问来源于stack exchange,提问作者Dsan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 08:01:31