使用Terraform创建的ACR清理任务运行报错:找不到acr:latest镜像
问题原因及解决方案
问题根源
你的ACR任务尝试拉取acr:latest镜像,是因为任务步骤中直接使用了acr purge命令,但未指定该命令所属的官方容器镜像。ACR任务会将未关联镜像的cmd字段内容视为镜像名称去拉取,导致找不到对应的镜像资源。
acr purge是微软提供的专用清理工具,封装在mcr.microsoft.com/acr/acrpurge容器镜像中,必须显式指定该镜像才能正确执行清理操作。
修正后的Terraform代码
修改azurerm_container_registry_task中的task_content部分,添加镜像指定并调整命令格式:
resource "azurerm_container_registry_task" "acr_purge_task" { name = "scheduledAcrPurgeTask" container_registry_id = azurerm_container_registry.acr.id platform { os = "Linux" } encoded_step { task_content = <<EOF version: v1.1.0 steps: - image: mcr.microsoft.com/acr/acrpurge:latest cmd: ["--filter", "REPO:TEST.*", "--untagged", "--ago", "10m"] disableWorkingDirectoryOverride: true timeout: 3600 EOF context_path = "/dev/null" } timer_trigger { name = "t1" schedule = "*/15 * * * *" enabled = true } }
关键修改点
- 添加
image: mcr.microsoft.com/acr/acrpurge:latest,指定使用官方的ACR清理工具镜像 - 将
cmd内容改为数组格式,确保命令参数正确传递 - 移除多余的缩进(YAML格式对缩进敏感,原代码中的缩进可能导致解析问题)
另外,确保你的ACR任务拥有足够的权限来执行清理操作,默认情况下任务会使用ACR的系统身份,需确认该身份具备仓库的删除权限。
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

