将 Docker Scout 与 Amazon ECR 集成

通过将 Docker Scout 与 Amazon Elastic Container Registry (ECR) 集成,您可以 查看 ECR 存储库中托管的镜像的镜像见解。集成后 Docker Scout 与 ECR 一起为存储库激活 Docker Scout,将 image 添加到存储库中,会自动触发 Image Analysis。您可以查看 使用 Docker Scout 仪表板或 CLI 进行镜像洞察 命令。docker scout

运作方式

为了帮助您将 Docker Scout 与 ECR 集成,您可以使用 CloudFormation 堆栈 模板,该模板创建和配置必要的 AWS 资源 将 Docker Scout 与您的 ECR 注册表集成。有关 AWS 的更多详细信息 资源,请参阅 CloudFormation 堆栈模板

下图显示了 Docker Scout ECR 集成的工作原理。

How the ECR integration works

集成后,Docker Scout 会自动拉取和分析镜像 推送到 ECR 注册表。有关镜像的元数据存储在 Docker Scout 平台,但 Docker Scout 不存储容器镜像 他们自己。有关 Docker Scout 如何处理镜像数据的更多信息,请参阅数据处理

CloudFormation 堆栈模板

下表描述了配置资源。

注意

创建这些资源会在 AWS 账户上产生少量的经常性成本。 表中的 Cost (成本) 列表示 资源,当集成每天推送 100 个镜像的 ECR 注册表时。

此外,当 Docker Scout 拉取镜像时,也会产生出口成本 来自 ECR。出口成本约为 0.09 USD/GB。

资源类型资源名称描述成本
AWS::SNSTopic::TopicSNSTopicSNS 主题,用于在创建 AWS 资源时通知 Docker Scout。自由
AWS::SNS::TopicPolicyTopicPolicy定义初始设置通知的主题。自由
AWS::SecretsManager::SecretScoutAPICredentials存储 EventBridge 用于向 Scout 触发事件的凭证。0.42 美元
AWS::Events::ApiDestinationApiDestination设置 EventBridge 与 Docker Scout 的连接,以发送 ECR 推送和删除事件。0.01 美元
AWS::Events::ConnectionConnectionEventBridge 连接到 Scout 的凭证。自由
AWS::Events::RuleDockerScoutEcrRule定义将 ECR 推送和删除发送到 Scout 的规则。自由
AWS::Events::RuleDockerScoutRepoDeletedRule定义将 ECR 存储库删除发送到 Scout 的规则。自由
AWS::IAM::RoleInvokeApiRole内部角色,用于授予事件对 .ApiDestination自由
AWS::IAM::RoleAssumeRoleEcrAccess此角色有权设置 Docker Scout 集成。ScoutAPICredentials自由

集成您的第一个注册表

在您的 AWS 账户中创建 CloudFormation 堆栈以启用 Docker Scout 集成。

先决条件:

  • 您必须有权访问具有创建资源权限的 AWS 账户。
  • 您是 Docker 组织的所有者。

要创建堆栈:

  1. 转到 Docker Scout 控制面板上的 ECR 集成页面

  2. 选择 Create on AWS (在 AWS 上创建) 按钮。

    这将在 AWS CloudFormation 控制台中打开 Create stack (创建堆栈) 向导,路径为 一个新的浏览器选项卡。如果您尚未登录 AWS,则会被重定向 首先转到登录页面。

    如果按钮灰显,则表示您缺少必要的 权限。

  3. 按照 Create stack (创建堆栈) 向导中的步骤操作,直到最后。选择 要集成的 AWS 区域。通过创建 资源。

    向导中的字段由 CloudFormation 模板预先填充。 因此,您无需编辑任何字段。

  4. 创建资源后(CloudFormation 状态显示在 AWS 控制台中),返回到 ECR 集成页面 在 Docker Scout 仪表板中。CREATE_COMPLETE

    Integrated registries (集成注册表) 列表显示 您刚刚集成的 ECR 注册表。如果成功,则集成状态 为 Connected (已连接)。

ECR 集成现已激活。让 Docker Scout 开始分析镜像 ,您需要在 Repository settings (存储库设置) 中为每个存储库激活它。

激活存储库后,Docker 会分析您推送的镜像 侦察员。分析结果将显示在 Docker Scout Dashboard 中。 如果您的存储库已包含镜像,Docker Scout 会拉取并分析 latest image version 自动。

集成其他注册表

要添加其他注册表,请执行以下操作:

  1. 转到 Docker Scout 控制面板上的 ECR 集成页面

  2. 选择列表顶部的 Add 按钮。

  3. 完成创建 AWS 资源的步骤。

  4. 创建资源后,返回到 ECR 集成页面 Docker Scout 仪表板。

    Integrated registries (集成注册表) 列表显示 您刚刚集成的 ECR 注册表。如果成功,则集成状态 为 Connected (已连接)。

接下来,为 Repository settings (存储库设置) 中要分析的存储库激活 Docker Scout。

删除集成

要删除集成的 ECR 注册表,您必须是 Docker 的所有者 组织。

  1. 转到 Docker Scout 控制面板上的 ECR 集成页面

  2. 在集成的列表中找到要删除的注册表 注册表,然后选择 Actions (操作) 列中的 Remove (删除) 图标。

    如果删除图标被禁用,则表示您缺少必要的 权限。

  3. 在打开的对话框中,选择 Remove 进行确认。

重要

从 Docker Scout 仪表板中删除集成不会删除 您账户中的 AWS 资源。

在 Docker Scout 中删除集成后,转到 AWS 控制台,然后 删除集成的 DockerScoutECRIntegration CloudFormation 堆栈 。

故障 排除

无法集成注册表

在 Docker Scout 控制面板的 ECR 集成页面上检查集成状态

  • 如果状态长时间为 Pending (待处理),则为 指示 AWS 端尚未完成集成。选择 Pending (待处理) 链接以打开 CloudFormation 向导,并完成所有 步骤。

  • Error status(错误)状态表示后端出了问题。 您可以尝试删除集成并重新创建它 再。

ECR 镜像未显示在控制面板中

如果 ECR 镜像的镜像分析结果未显示在 Docker 中 侦察员仪表板:

  • 确保您已为存储库激活 Docker Scout。查看和管理 活动存储库

  • 确保注册表的 AWS 账户 ID 和区域列在 ECR 集成页面。

    账户 ID 和区域包含在注册表主机名中:<aws_account_id>.dkr.ecr.<region>.amazonaws.com/<image>