Visual Studio发布至Azure Container Registry失败,Docker配置文件不存在
解决Visual Studio发布ASP.NET Core到Azure Container Registry的凭证错误问题
问题概述
使用Visual Studio发布工具推送ASP.NET Core镜像到Azure Container Registry时,提示发布成功但镜像找不到,日志显示错误:
CONTAINER1013: Failed to push to the output registry: CONTAINER1008: Failed retrieving credentials for "containerregistryname.azurecr.io": Docker config file doesn't exist
无法使用Docker Desktop,仅依赖Visual Studio完成发布。
解决步骤
1. 手动生成Docker配置文件
因为没有Docker Desktop,VS无法自动创建Docker配置文件(通常位于%USERPROFILE%\.docker\config.json),需手动创建:
- 在用户目录下新建
.docker文件夹(路径:C:\Users\[你的用户名]\.docker) - 在该文件夹内创建
config.json文件,内容填写:
{ "auths": { "containerregistryname.azurecr.io": {} } }
替换containerregistryname为你的ACR名称。
2. 重新关联Azure账户并验证ACR配置
- 打开Visual Studio,点击右上角账户头像,确认已登录目标Azure订阅的账户
- 右键项目 → 「发布」→ 选择已有的Azure Container Registry发布配置
- 点击「编辑」→ 在「容器注册表」选项卡中,重新选择你的ACR,确保VS能获取有效凭证
- 保存配置后重新尝试发布
3. 清除VS的Azure凭证缓存
如果VS缓存的凭证失效,会导致无法获取ACR权限:
- 打开「控制面板」→ 「用户账户」→ 「凭据管理器」→ 「Windows凭据」
- 删除所有以
AzureServiceAuth或containerregistryname.azurecr.io开头的凭据 - 重启Visual Studio,重新登录Azure账户后再发布
4. 检查ACR的角色权限
确保你的Azure账户拥有ACR的「AcrPush」角色权限:
- 登录Azure门户,进入目标ACR → 「访问控制(IAM)」→ 「角色分配」
- 搜索你的账户,确认是否有「AcrPush」角色;若没有,点击「添加」→ 「添加角色分配」→ 选择「AcrPush」角色 → 选中你的账户 → 保存
5. 用dotnet命令手动发布(替代方案)
如果上述方法无效,可尝试用VS内置终端执行发布命令:
dotnet publish --os linux --arch x64 -c Release /p:PublishProfile=DefaultContainer /p:ContainerRegistry=containerregistryname.azurecr.io
替换containerregistryname为你的ACR名称,根据项目实际情况调整OS和架构参数。
内容的提问来源于stack exchange,提问作者pampua84
相关产品推荐
相关产品推荐

