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

无网络环境下已下载所需镜像无法使用Testcontainers的问题咨询

报错根因

Testcontainers默认运行逻辑会主动向Docker Hub发起请求,校验镜像是否存在更新、拉取镜像元数据,即使本地已经提前下载好对应镜像也会触发该操作。无互联网环境下无法解析registry-1.docker.io地址,就会抛出该报错。

解决步骤

步骤1:修改代码主动指定本地已存在的镜像

你当前代码没有手动指定BrowserWebDriverContainer的镜像地址,Testcontainers会尝试使用默认匹配的镜像版本,可能和你本地存储的版本不一致,直接手动指定本地已有的镜像即可:

// 主动指定本地已下载的Firefox镜像,完全匹配本地镜像名和版本号
container = new BrowserWebDriverContainer<>("selenium/standalone-firefox-debug:2.45.0")
        .withCapabilities(Capabilities.getFirefoxOptions())
        .withRecordingMode(
          webDriverForm.get().isVideoError() ? VncRecordingMode.RECORD_FAILING : VncRecordingMode.RECORD_ALL,
          new File(webDriverForm.get().getVideoPath()), VncRecordingFormat.MP4);
// 注意你原代码这里少了首字母c,需修正
container.start();
WebDriver driver = container.getWebDriver();

步骤2:添加Testcontainers离线配置

在项目src/test/resources目录下新建testcontainers.properties文件,添加以下配置:

# 完全禁止Testcontainers主动拉取任何镜像,仅使用本地已存在的镜像
testcontainers.image.pull=never
# 手动指定Testcontainers依赖的辅助镜像版本,和本地存储的版本匹配
ryuk.container.image=testcontainers/ryuk:0.3.2
vncrecorder.container.image=testcontainers/vnc-recorder:1.1.0

可选:关闭Ryuk辅助容器

如果修改后还是报错,可以添加配置关闭Ryuk容器(Ryuk是Testcontainers用于自动清理测试容器的辅助服务):

testcontainers.ryuk.disabled=true

*注意:关闭Ryuk后测试结束后需要手动清理残留的Testcontainers容器,避免占用系统资源。

修改完成后重新执行测试即可,Testcontainers会直接调用本地已有的镜像,不会再发起公网请求。

内容的提问来源于stack exchange,提问作者Александр Денисов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:36:00