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

如何限制应用容器仅使用指定私有镜像仓库的基础镜像?

限制Azure ACR中应用镜像的基础镜像来源

以下是几种可行的方案,确保推送至私有ACR的应用镜像仅使用指定私有仓库的基础镜像,禁止公共镜像(如mcr.microsoft.com):

1. 集成ACR任务的前置验证脚本

在ACR任务中添加构建前/构建后的验证步骤,通过脚本检查Dockerfile中的基础镜像地址:

  • 编写Shell脚本提取并验证FROM指令中的镜像源:
    # 从Dockerfile中提取基础镜像
    BASE_IMAGE=$(grep -E "^FROM" Dockerfile | head -n 1 | awk '{print $2}')
    
    # 检查是否为允许的私有仓库
    if [[ ! "$BASE_IMAGE" =~ ^acr\.xxxxx\.com/ ]]; then
        echo "ERROR: 仅允许使用acr.xxxxx.com仓库的基础镜像,当前使用的是$BASE_IMAGE"
        exit 1
    fi
    
    # 额外拦截mcr.microsoft.com镜像(双重保障)
    if [[ "$BASE_IMAGE" =~ ^mcr\.microsoft\.com/ ]]; then
        echo "ERROR: 禁止使用mcr.microsoft.com的基础镜像"
        exit 1
    fi
    
  • 将该脚本添加到ACR任务的构建流程中,作为前置步骤,验证失败则终止镜像推送。

2. 使用Azure Policy强制镜像来源

通过自定义Azure Policy直接拒绝不符合要求的镜像推送:

  • 创建如下规则的自定义Policy(JSON格式):
    {
        "if": {
            "allOf": [
                {
                    "field": "type",
                    "equals": "Microsoft.ContainerRegistry/registries/repositories/manifests"
                },
                {
                    "anyOf": [
                        {
                            "field": "Microsoft.ContainerRegistry/registries/repositories/manifests/imageBaseRegistry",
                            "notEquals": "acr.xxxxx.com"
                        },
                        {
                            "field": "Microsoft.ContainerRegistry/registries/repositories/manifests/imageBaseRegistry",
                            "equals": "mcr.microsoft.com"
                        }
                    ]
                }
            ]
        },
        "then": {
            "effect": "deny"
        }
    }
    
  • 将Policy分配到ACR所在的资源组或订阅,系统会自动拦截不符合要求的镜像推送操作。

3. 利用Docker BuildKit构建钩子验证

在本地或CI/CD构建环节,通过Docker BuildKit的钩子功能在构建前验证基础镜像:

  • 创建docker-build-hooks/pre_build脚本,逻辑同步骤1的验证脚本;
  • 构建镜像时指定钩子目录:
    DOCKER_BUILDKIT=1 docker build --build-context hooks=./docker-build-hooks .
    
  • 验证失败时,构建流程会直接终止,避免生成违规镜像。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:12:25