Azure Container App自定义Vnet部署报错InvalidParameterValueInContainerTemplate求助
问题解决:Azure容器环境自定义VNet下MCR镜像拉取失败
问题现象
部署快速启动镜像到关联自定义VNet(含自定义DNS、内部访问模式)的Azure容器环境时,出现以下错误:
The following field(s) are either invalid or missing. Field 'template.containers.simple-hello-world-container-image' is invalid with details: 'Invalid Value: "mcr.microsoft.com/k8se/quickstart:latest": Get "https://mcr.microsoft.com/v2/:EOF'
不使用自定义VNet时部署正常,说明问题出在自定义VNet的网络配置上。
排查与解决方案
1. 自定义DNS配置验证
- 测试DNS解析:在VNet内的虚拟机执行
nslookup mcr.microsoft.com,如果无法解析到有效IP,说明自定义DNS无法处理公共域名查询:- 调整自定义DNS设置,添加公共DNS转发(如转发到Azure公共DNS
168.63.129.16) - 若使用私有DNS区域,需手动添加
mcr.microsoft.com的A/AAAA记录指向其公网IP范围
- 调整自定义DNS设置,添加公共DNS转发(如转发到Azure公共DNS
2. 出站流量规则检查
- 网络安全组(NSG):添加出站允许规则,目标选择服务标签
AzureContainerRegistry,端口指定443(MCR通过HTTPS提供镜像服务) - Azure防火墙(若启用):配置应用规则允许访问
mcr.microsoft.com,同时确保TLS检查不会阻断与MCR的连接(EOF错误常由TLS握手中断引发)
3. VNet路由表配置确认
- 检查VNet关联的路由表,确保存在
0.0.0.0/0的默认路由,下一跳指向可中转公网流量的资源(如Azure防火墙、NVA) - 若无默认路由,容器环境的出站请求无法到达MCR,需补充路由配置
4. 快速验证测试
- 在VNet内虚拟机执行
docker pull mcr.microsoft.com/k8se/quickstart:latest,复现镜像拉取流程,直接定位网络问题 - 用
curl -v https://mcr.microsoft.com/v2/查看HTTPS连接细节,区分是DNS解析失败、连接超时还是TLS错误导致的EOF问题
内容的提问来源于stack exchange,提问作者ShaolinShane
相关产品推荐
相关产品推荐

