Skip to content
返回云服务

Azure 容器注册表 (ACR)

私有 Docker 注册表,支持异地复制、内容信任(签名镜像)、漏洞扫描(通过 Defender)和 webhook 触发任务。

Azure入门

为什么

ACR 保持镜像私有且靠近 Azure 计算(AKS、App Service、ACI),通过 Azure 骨干快速拉取。Premium 层异地复制到多区域,AKS 从本地副本拉取。

Defender 集成在推送时扫描镜像 CVE。

何时使用

任何部署到 Azure 的私有镜像都应使用 ACR。异地复制或内容信任用 Premium;单区域用 Basic/Standard。

对比 Docker Hub 私有仓库(免费有限)和 GHCR(公共免费、私有付费)—— 拉取在 Azure 内时 ACR 最便宜。

如何做

1. 创建 ACR(Basic、Standard 或 Premium)。 2. az acr login 认证。 3. 将镜像标记为 <acr-login-server>/image:tag 并 docker push。 4. 用 az aks update --attach-acr 连接 AKS 使其无需密钥即可拉取。 5. 仅快速测试启用管理员账户;生产用托管标识或 RBAC。 6.(Premium)启用异地复制、内容信任和 Defender 扫描。 ```bash az acr create --name myacr --resource-group rg --sku Standard az acr login --name myacr docker tag app:v1 myacr.azurecr.io/app:v1 docker push myacr.azurecr.io/app:v1 az aks update --name myaks --resource-group rg --attach-acr myacr ```

示例

每次 git push 时构建镜像的 ACR 任务(无需单独管道的 CI): ```bash az acr task create --name buildapp --registry myacr \ --image app:{{.Run.ID}} \ --context https://github.com/contoso/app#main \ --file Dockerfile \ --git-access-token \${GH_PAT} # 手动触发 az acr task run --name buildapp --registry myacr ``` 从 AKS 列出并拉取构建的镜像: ```bash az acr repository list --name myacr --output table kubectl run app --image=myacr.azurecr.io/app:42 ```

常见问题

  • ⚠docker push 被拒绝 —— 未登录或缺少 AcrPush 角色;运行 az acr login 或将 AcrPush/AcrPull 分配给标识。
  • ⚠AKS ImagePullBackOff —— ACR 未连接;运行 az aks update --attach-acr myacr,或用 ACR 管理员凭据创建 imagePullSecret(不够安全)。
  • ⚠远区域拉取慢 —— 用 Premium 异地复制将镜像镜像到每个 AKS 集群附近,拉取走本地副本。

最佳实践

  • ✓用 ACR 任务实现推送即构建 CI —— 在 Azure 靠近注册表处构建,避免本地 Docker 构建和大层慢推送。
  • ✓启用 Microsoft Defender for Containers 扫描每个推送镜像的 CVE,并通过准入策略阻止部署易受攻击镜像。
  • ✓用内容信任(Premium)签名镜像并要求 AKS 仅拉取签名镜像,防止篡改镜像运行。

常见问题解答

什么是Azure 容器注册表 (ACR)?它解决什么问题?

私有 Docker 注册表,支持异地复制、内容信任(签名镜像)、漏洞扫描(通过 Defender)和 webhook 触发任务。 它可帮助开发者在不自建基础设施的前提下完成部署、存储与扩展,是云服务选型的核心参考。

如何在 5 分钟内上手Azure 容器注册表 (ACR)?

两步即可跑通:① 创建 ACR(Basic、Standard 或 Premium)。;② az acr login 认证。。建议先用免费套餐验证流程,再接入生产环境。

Azure 容器注册表 (ACR) 最容易踩的坑是什么?

最高频的问题是:docker push 被拒绝 —— 未登录或缺少 AcrPush 角色;运行 az acr login 或将 AcrPush/AcrPull 分配给标识。。建议在上线前用 checklist 逐项核对,并在 CI 中加入策略与配置扫描。

Azure 容器注册表 (ACR) 的最佳实践有哪些?

Azure 容器注册表 (ACR) 的最佳实践包括:用 ACR 任务实现推送即构建 CI —— 在 Azure 靠近注册表处构建,避免本地 Docker 构建和大层慢推送。;启用 Microsoft Defender for Containers 扫描每个推送镜像的 CVE,并通过准入策略阻止部署易受攻击镜像。;用内容信任(Premium)签名镜像并要求 AKS 仅拉取签名镜像,防止篡改镜像运行。。其中首条「用 ACR 任务实现推送即构建 CI —— 在 Azure 靠近注册表处构建,避免本地 Docker 构建和大层慢推送。」应作为团队默认规范写入 IaC 模板。

Azure 容器注册表 (ACR) 如何控制成本与避免账单意外?

三招防超支:① 为所有资源打 env/team 标签并启用账单告警;② 用预算阈值触发 Slack/邮件通知;③ 定期用 Cost Explorer 审查闲置资源并清理。Azure 容器注册表 (ACR) 多数提供免费套餐,先在免费额度内验证再放量。