将 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 堆栈模板,该模板会创建和配置必要的 AWS 资源,以便将 Docker Scout 与你的 ECR 注册表集成。有关 AWS 资源的更多详细信息,请参阅CloudFormation 堆栈模板。
下图展示了 Docker Scout ECR 集成的工作原理。


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