将 Docker Scout 与 Amazon ECR 集成
将 Docker Scout 与 Amazon Elastic Container Registry (ECR) 集成后,您可以查看托管在 ECR 仓库中的镜像的洞察信息。在将 Docker Scout 与 ECR 集成并为仓库激活 Docker Scout 后,向仓库推送镜像会自动触发镜像分析。您可以使用 Docker Scout Dashboard 或 docker scout CLI 命令查看镜像洞察信息。
工作原理
为了帮助您将 Docker Scout 与 ECR 集成,您可以使用 CloudFormation 堆栈模板,该模板创建并配置将 Docker Scout 与您的 ECR 注册表集成所需的 AWS 资源。有关 AWS 资源的更多详细信息,请参阅 CloudFormation 堆栈模板。
下图显示了 Docker Scout ECR 集成的工作原理。

集成后,Docker Scout 会自动拉取并分析您推送到 ECR 注册表的镜像。关于您镜像的元数据存储在 Docker Scout 平台上,但 Docker Scout 不存储容器镜像本身。有关 Docker Scout 如何处理镜像数据的更多信息,请参阅 数据处理。
CloudFormation 堆栈模板
下表描述了配置资源。
注意
创建这些资源会在 AWS 账户上产生少量经常性费用。 表中的 成本 列表示资源的预估每月成本, 基于集成每天接收 100 次镜像推送的 ECR 注册表。
此外,当 Docker Scout 从 ECR 拉取镜像时,还会产生出口流量费用。该费用约为每 GB $0.09。
| 资源类型 | 资源名称 | 描述 | 成本 |
|---|---|---|---|
AWS::SNSTopic::Topic | SNSTopic | 用于在 AWS 资源创建完成后通知 Docker Scout 的 SNS 主题。 | 免费 |
AWS::SNS::TopicPolicy | TopicPolicy | 定义初始设置通知的主题。 | 免费 |
AWS::SecretsManager::Secret | ScoutAPICredentials | 存储 EventBridge 用于向 Scout 触发事件的凭证。 | $0.42 |
AWS::Events::ApiDestination | ApiDestination | 设置 EventBridge 连接到 Docker Scout,用于发送 ECR 推送和删除事件。 | $0.01 |
AWS::Events::Connection | Connection | 用于连接 Scout 的 EventBridge 凭证。 | 免费 |
AWS::Events::Rule | DockerScoutEcrRule | 定义将 ECR 推送和删除发送到 Scout 的规则。 | 免费 |
AWS::Events::Rule | DockerScoutRepoDeletedRule | 定义将 ECR 仓库删除操作发送到 Scout 的规则。 | 免费 |
AWS::IAM::Role | InvokeApiRole | 内部角色,用于授予对 ApiDestination 的事件访问权限。 | 免费 |
AWS::IAM::Role | AssumeRoleEcrAccess | 此角色有权访问 ScoutAPICredentials 用于设置 Docker Scout 集成。 | 免费 |
集成您的第一个镜像仓库
在您的 AWS 账户中创建 CloudFormation 堆栈,以启用 Docker Scout 集成。
Prerequisites:
- 您必须拥有 AWS 账户的访问权限以及创建资源的权限。
- 您必须是 Docker 组织的所有者。
创建堆栈:
转到 Docker Scout Dashboard 上的 ECR 集成页面。
选择 Create on AWS 按钮。
这将在新的浏览器标签页中打开 AWS CloudFormation 控制台中的创建堆栈向导。如果您尚未登录 AWS,将首先重定向到登录页面。
如果按钮显示为灰色,则表示您在 Docker 组织中缺少必要的权限。
按照创建堆栈向导中的步骤操作,直至完成。选择您想要集成的 AWS 区域。通过创建资源来完成该过程。
向导中的字段已由 CloudFormation 模板预填充, 因此您无需编辑任何字段。
当资源创建完成后(AWS 控制台中的 CloudFormation 状态显示为
CREATE_COMPLETE),请返回 Docker Scout Dashboard 中的 ECR 集成页面。集成注册表列表显示了您刚刚集成的 ECR 注册表的账户 ID 和区域。如果成功,集成状态为已连接。
ECR 集成现已激活。为了让 Docker Scout 开始分析注册表中的镜像,您需要在仓库设置中为每个仓库激活它。
激活仓库后,您推送的镜像将由 Docker Scout 进行分析。分析结果显示在 Docker Scout 仪表板中。 如果您的仓库已包含镜像,Docker Scout 会自动拉取并分析 最新的镜像版本。
集成额外的镜像仓库
添加额外的镜像仓库:
转到 Docker Scout Dashboard 上的 ECR 集成页面。
选择列表顶部的 添加 按钮。
完成创建 AWS 资源的步骤。
创建资源后,返回 Docker Scout Dashboard 中的 ECR 集成页面。
集成注册表列表显示了您刚刚集成的 ECR 注册表的账户 ID 和区域。如果成功,集成状态为已连接。
接下来,在仓库设置中为您想要分析的仓库启用 Docker Scout。
移除集成
要移除集成的 ECR 注册表,您必须是 Docker 组织的所有者。
转到 Docker Scout Dashboard 上的 ECR 集成页面。
在集成仓库列表中找到您想要移除的仓库,并在操作列中选择移除图标。
如果删除图标被禁用,这意味着您在 Docker 组织中缺少必要的权限。
在打开的对话框中,选择 移除 进行确认。
重要
从 Docker Scout 仪表板中移除集成并不会删除您账户中的 AWS 资源。
在 Docker Scout 中移除集成后,请前往 AWS 控制台并删除您想要移除的集成对应的 DockerScoutECRIntegration CloudFormation 堆栈。
故障排除
无法集成仓库
在 Docker Scout Dashboard 的 ECR 集成页面 上检查集成的状态。
如果状态长时间显示为 Pending,则表明 AWS 端的集成尚未完成。选择 Pending 链接以打开 CloudFormation 向导,并完成所有步骤。
错误状态表示后端出现了问题。 您可以尝试 移除集成并重新创建它。
ECR 镜像未在仪表板中显示
如果您的 ECR 镜像的镜像分析结果未显示在 Docker Scout 仪表板中:
请确保已为仓库启用 Docker Scout。在仓库设置中查看和管理活跃仓库。
确保您的注册表的 AWS 账户 ID 和区域已列在 ECR 集成页面上。
账户 ID 和区域包含在注册表主机名中:
<aws_account_id>.dkr.ecr.<region>.amazonaws.com/<image>