目录

Intro

前言

为什么要切换到 mcr.azure.cn?

需要更改什么?

快速迁移清单(Call for Action)

典型场景 Before/After

Docker 拉取镜像

Dockerfile

Kubernetes 部署清单(Deployment/StatefulSet)

验证与回归检查

常见问题(FAQ)

结语:立即行动,保障供应链与交付效率

References

引用链接


Intro

最近在本地构建 docker 镜像的时候发现速度非常慢,在想是不是前段时间 dotnet CDN 切换有关,于是去微软容器注册表网站上看了一眼发现,针对中国用户推出了一个中国区域的 CDN 地址,换了中国区的容器镜像地址之后,构建速度非常快,推荐大家有需要的做一个迁移升级

图片

前言

为了进一步提升中国用户/开发者在拉取微软官方容器与 OCI 构件时的稳定性、速度与合规性,Microsoft Artifact Registry(MAR,亦称 Microsoft Container Registry/MCR)现已在中国区域提供官方注册表端点:mcr.azure.cn 与数据交付端点:*.data.mcr.azure.cn,原来的镜像地址在中国大陆会有严重的性能降级问题,推荐大家进行更新成新的中国区域的镜像地址。


为什么要切换到 mcr.azure.cn

  • • 更低时延与更高稳定性:在中国区域,mcr.azure.cn(注册表发现/REST 端点)与 *.data.mcr.azure.cn(数据交付/CDN 端点)由 Azure 在本地网络环境优化与加速,减少跨境访问带来的抖动与不确定性。

  • • 可靠的数据交付:数据端点由 Azure Front Door 的区域 CDN POP 承载,提供多节点与更好的容灾能力;注册表端点通过 Azure Traffic Manager 覆盖全球,自动选择最优路径。

  • • 合规与可管理性:面向中国区域的官方域名与线路,更便于企业在本地网络与合规框架下进行统一配置与审计。

  • • 官方支持与供应链安全:MAR 不提供官方镜像站(mirrors),请勿使用第三方镜像以免引入内容被篡改、来源不明等供应链风险;使用官方端点可获得微软支持与最佳实践保障。

  • 中国区域 CDN 分布如下:

  • 图片

关键点:在中国区域场景,mcr.azure.cn 与 *.data.mcr.azure.cn 是 mcr.microsoft.com 与 *.data.mcr.microsoft.com 的对应官方端点。迁移的核心仅是域名主机名的切换,镜像路径(仓库与标签)保持不变。


需要更改什么?

  1. 1. 将所有镜像引用的主机名从 mcr.microsoft.com 替换为 mcr.azure.cn(路径与标签不变)。

  2. 2. 在企业防火墙/代理白名单中放行(如果需要):

    • • mcr.azure.cn

    • • *.data.mcr.azure.cn

  3. 3. 更新 CI/CD、基础设施与脚本中的拉取命令与配置:

    • • Docker/Podman/nerdctl/ORAS 命令行

    • • Kubernetes 清单(image: 字段)

    • • Helm values.yaml 的 image.repository

    • • 容器运行时配置(containerd/CRI-O)的 registry 端点与镜像加速

    • • 构建流水线(GitHub Actions/Azure DevOps/Jenkins/Gitlab/BitbucketPipeline 等)

  4. 4. 内部文档的同步更新。


快速迁移清单(Call for Action)

  • • 立刻在代码库中搜索旧端点并替换:

    • • 文本搜索:mcr.microsoft.com

    • • 批量替换:将其替换为 mcr.azure.cn

  • • 在预生产环境验证拉取、构建与部署流程(含回滚预案)。

  • • 网络侧放行并观察访问质量与带宽(mcr.azure.cn 与 *.data.mcr.azure.cn)。

  • • 通知相关团队(平台/DevOps/安全/网络)并更新内部知识库与新手指南。

  • • 停止使用非官方镜像站,统一改用官方中国区端点。


典型场景 Before/After

Docker 拉取镜像

# Before
docker pull mcr.microsoft.com/dotnet/runtime:10.0

# After
docker pull mcr.azure.cn/dotnet/runtime:10.0

Dockerfile

# FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS base
FROM mcr.azure.cn/dotnet/aspnet:10.0 AS base

# FROM mcr.microsoft.com/dotnet/sdk:10.0 AS publish
FROM mcr.azure.cn/dotnet/sdk:10.0 AS publish

图片

Kubernetes 部署清单(Deployment/StatefulSet)

# Before
spec:
  template:
    spec:
      containers:
      - name: web
        image: mcr.microsoft.com/dotnet/aspnet:10.0
# After
spec:
  template:
    spec:
      containers:
      - name: web
        image: mcr.azure.cn/dotnet/aspnet:10.0

验证与回归检查

  • • 连接性测试:

    • • docker pull mcr.azure.cn/<repo>:<tag> 是否稳定成功

    • • 在不同时间/网络条件下重复测试以覆盖峰谷

  • • 性能与可靠性:

    • • 比较迁移前后拉取时延与带宽(time docker pull、指标/日志)

  • • 兼容性:

    • • 业务镜像路径与标签不变,仅主机名更改;如使用摘要(digest),仍保持可拉取

  • • 网络与安全:

    • • 企业防火墙/代理是否已放行 mcr.azure.cn 与 *.data.mcr.azure.cn

    • • 监控/告警是否已调整,避免旧域名导致误报


常见问题(FAQ)

  • • 是否需要更改镜像“路径”(仓库/标签)?

    • • 不需要。仅将主机名从 mcr.microsoft.com 替换为 mcr.azure.cn,其余保持不变。

  • • 数据端点 *.data.mcr.azure.cn 要手动配置吗?

    • • 不需要在命令中显式使用。客户端会通过注册表端点协商数据 URL;但企业网络需放行该通配域名以保证数据能顺利下载。

  • • 是否需要登录认证?

    • • MAR 作为官方分发注册表,绝大多数公共内容无需认证即可拉取;如有少数场景额外要求,请参考具体镜像文档与企业安全策略。

  • • 海外环境是否需要迁移?

    • • 海外场景可继续使用 mcr.microsoft.com;中国境内推荐使用 mcr.azure.cn 以获得本地网络优化与更好体验。

  • • 是否可以使用第三方镜像站?

    • • 不推荐。MAR 不提供官方镜像站,第三方镜像存在内容完整性与供应链风险;请使用官方端点并参考微软支持与安全最佳实践。


结语:立即行动,保障供应链与交付效率

  • • 现在就搜索并替换代码库、流水线与配置中的 mcr.microsoft.com → mcr.azure.cn

  • • 放行并验证 mcr.azure.cn 与 *.data.mcr.azure.cn 的网络访问。

  • • 在预生产全面验证后尽快上线,确保生产交付的稳定性与合规性。

  • • 停止使用非官方镜像来源,统一走微软官方中国区端点义获得最佳支持与安全保障。

如遇问题,请联系微软支持或在 GitHub 仓库提交 Issue:

  • • Microsoft 支持:创建支持请求[1]

  • • 反馈渠道:microsoft/containerregistry Issues[2]

References

  • • MAR 端点使用指南[3]

  • • MAR 防火墙规则[4]

  • • Azure CDN 中国 POP 覆盖[5]

  • • Azure CDN 全球 POP 覆盖[6]

引用链接

[1] 创建支持请求:https://azure.microsoft.com/support/create-ticket/
[2]microsoft/containerregistry Issues:https://github.com/microsoft/containerregistry/issues
[3]MAR 端点使用指南:https://github.com/microsoft/containerregistry/blob/ba7c2c0b33ae4868ea4a766624fccc07a7a98faf/docs/mcr-endpoints-guidance.md
[4]MAR 防火墙规则:https://github.com/microsoft/containerregistry/blob/ba7c2c0b33ae4868ea4a766624fccc07a7a98faf/docs/client-firewall-rules.md
[5]Azure CDN 中国 POP 覆盖:https://docs.azure.cn/cdn/cdn-pops
[6]Azure CDN 全球 POP 覆盖:https://docs.microsoft.com/azure/cdn/cdn-pop-locations

引入地址

更多推荐