You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure托管构建代理使用TestContainers时找不到Docker镜像报错No such image

Azure托管构建代理上TestContainers.MySql镜像找不到问题排查与解决

问题背景

  • 运行环境:windows-2022 Azure托管构建代理,基于.NET Core开发,项目引入TestContainers.MySql NuGet包
  • 异常现象:本地运行时可正常拉取Docker镜像并创建容器;但在Azure代理上执行测试时,抛出Docker.DotNet.DockerImageNotFoundException,核心错误提示:

Docker.DotNet.DockerImageNotFoundException : Docker API responded with status code=NotFound, response={"message":"No such image: mcr.microsoft.com/mssql/server:2019-CU18-ubuntu-20.04"}

日志显示虽有“Docker image mcr.microsoft.com/mssql/server:2019-CU18-ubuntu-20.04 created”的记录,但实际启动容器时仍提示镜像不存在。

解决方法

1. 强制设置镜像拉取策略

在TestContainers配置中明确设置拉取策略为Always,确保构建代理主动从仓库拉取镜像,不依赖本地缓存:

var container = new MySqlBuilder()
    .WithImage("mcr.microsoft.com/mssql/server:2019-CU18-ubuntu-20.04")
    .WithPullPolicy(PullPolicy.Always)
    .Build();

2. 切换Docker容器模式

由于使用Windows代理,而目标镜像是Linux版本(ubuntu-20.04),需确保Docker启用Linux容器模式。在构建流水线中添加PowerShell步骤切换:

& "C:\Program Files\Docker\Docker\DockerCli.exe" -SwitchLinuxEngine
Start-Sleep -Seconds 30

3. 提前手动拉取镜像

在测试执行前,添加Docker拉取命令确保镜像已存在于代理环境:

docker pull mcr.microsoft.com/mssql/server:2019-CU18-ubuntu-20.04

4. 验证镜像名称正确性

确认代码中使用的镜像标签与仓库中实际存在的版本一致,避免版本号拼写错误。可在本地执行docker pull命令验证镜像是否可正常获取。

内容的提问来源于stack exchange,提问作者Victorio Berra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 21:10:37