Azure 容器注册表集成
通过将 Docker Scout 与 Azure 容器注册表 (ACR) 集成,您可以查看 ACR 存储库中托管的映像的映像见解。将 Docker Scout 与 ACR 集成并为存储库激活 Docker Scout 后,将镜像推送到存储库会自动触发镜像分析。您可以使用 Docker Scout Dashboard 或docker scout
CLI 命令查看图像见解。
怎么运行的
为了帮助您将 Azure 容器注册表与 Docker Scout 集成,您可以使用自定义 Azure 资源管理器 (ARM) 模板,该模板会自动在 Azure 中创建必要的基础结构:
- 图像推送和删除事件的 EventGrid 主题和订阅。
- 注册表的只读授权令牌,用于列出存储库并摄取图像。
在 Azure 中创建资源后,您可以在集成 ACR 实例中启用映像存储库的集成。启用存储库后,推送新图像会自动触发图像分析。分析结果显示在 Docker Scout Dashboard 中。
如果您在已包含映像的存储库上启用集成,Docker Scout 会自动提取并分析最新的映像版本。
ARM模板
下表描述了配置资源。
笔记
创建这些资源会在 Azure 帐户上产生少量的经常性费用。表中的“成本”列表示集成每天推送 100 个图像的 ACR 注册表时估计的每月资源成本。
出口成本根据使用情况而有所不同,但每 GB 约为 0.1 美元,并且前 100 GB 是免费的。
天蓝色 | 资源 | 成本 |
---|---|---|
事件网格系统主题 | 订阅 Azure 容器注册表事件(镜像推送和镜像删除) | 自由的 |
活动订阅 | 通过 Webhook 订阅将事件网格事件发送到 Scout | 每 100 万条消息 0.60 美元。前10万免费。 |
注册表令牌 | 用于 Scout 列出存储库并从注册表中提取映像的只读令牌 | 自由的 |
以下 JSON 文档显示了 Docker Scout 用于创建 Azure 资源的 ARM 模板。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"DockerScoutWebhook": {
"metadata": {
"description": "EventGrid's subscription Webhook"
},
"type": "String"
},
"RegistryName": {
"metadata": {
"description": "Name of the registry to add Docker Scout"
},
"type": "String"
},
"systemTopics_dockerScoutRepository": {
"defaultValue": "docker-scout-repository",
"metadata": {
"description": "EventGrid's topic name"
},
"type": "String"
}
},
"resources": [
{
"apiVersion": "2023-06-01-preview",
"identity": {
"type": "None"
},
"location": "[resourceGroup().location]",
"name": "[parameters('systemTopics_dockerScoutRepository')]",
"properties": {
"source": "[extensionResourceId(resourceGroup().Id , 'Microsoft.ContainerRegistry/Registries', parameters('RegistryName'))]",
"topicType": "Microsoft.ContainerRegistry.Registries"
},
"type": "Microsoft.EventGrid/systemTopics"
},
{
"apiVersion": "2023-06-01-preview",
"dependsOn": [
"[resourceId('Microsoft.EventGrid/systemTopics', parameters('systemTopics_dockerScoutRepository'))]"
],
"name": "[concat(parameters('systemTopics_dockerScoutRepository'), '/image-change')]",
"properties": {
"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "[parameters('DockerScoutWebhook')]",
"maxEventsPerBatch": 1,
"preferredBatchSizeInKilobytes": 64
}
},
"eventDeliverySchema": "EventGridSchema",
"filter": {
"enableAdvancedFilteringOnArrays": true,
"includedEventTypes": [
"Microsoft.ContainerRegistry.ImagePushed",
"Microsoft.ContainerRegistry.ImageDeleted"
]
},
"labels": [],
"retryPolicy": {
"eventTimeToLiveInMinutes": 1440,
"maxDeliveryAttempts": 30
}
},
"type": "Microsoft.EventGrid/systemTopics/eventSubscriptions"
},
{
"apiVersion": "2023-01-01-preview",
"name": "[concat(parameters('RegistryName'), '/docker-scout-readonly-token')]",
"properties": {
"credentials": {},
"scopeMapId": "[resourceId('Microsoft.ContainerRegistry/registries/scopeMaps', parameters('RegistryName'), '_repositories_pull_metadata_read')]"
},
"type": "Microsoft.ContainerRegistry/registries/tokens"
}
],
"variables": {}
}
集成注册表
转至 Docker Scout 仪表板上的ACR 集成页面。
在如何集成部分中,输入要集成的注册表的注册表主机名。
选择下一步。
选择“部署到 Azure”以在 Azure 中打开模板部署向导。
如果您尚未登录,系统可能会提示您登录 Azure 帐户。
在模板向导中,配置您的部署:
资源组:输入与容器注册表使用的资源组相同的资源组。 Docker Scout 资源必须部署到与注册表相同的资源组。
注册表名称:该字段预先填充注册表主机名的子域。
选择“查看 + 创建”,然后选择“创建”以部署模板。
等待部署完成。
在“部署详细信息”部分中,单击新创建的Containerregistry token类型的资源。为此令牌生成新密码。
或者,使用 Azure 中的搜索功能导航到 要集成的容器注册表资源,并为创建的访问令牌生成新密码。
复制生成的密码并返回 Docker Scout Dashboard 以完成集成。
将生成的密码粘贴到注册表令牌字段中。
选择启用集成。
选择启用集成后,Docker Scout 会执行连接测试来验证集成。如果验证成功,您将被重定向到 Azure 注册表摘要页面,其中显示当前组织的所有 Azure 集成。
接下来,在存储库设置中为要分析的存储库激活 Docker Scout 。
激活存储库后,您推送的镜像将由 Docker Scout 进行分析。分析结果显示在 Docker Scout Dashboard 中。如果您的存储库已包含映像,Docker Scout 会自动提取并分析最新的映像版本。
删除集成
重要的
删除 Docker Scout 仪表板中的集成不会自动删除在 Azure 中创建的资源。
要删除 ACR 集成:
转到 Docker Scout 仪表板上的ACR 集成页面。
找到您要删除的 ACR 集成,然后选择“删除” 按钮。
在打开的对话框中,选择“删除”进行确认。
删除 Docker Scout Dashboard 中的集成后,还要删除与集成相关的 Azure 资源:
docker-scout-readonly-token
容器注册表的令牌。- 事件
docker-scout-repository
网格系统主题。