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

GKE containerd节点Testcontainers报Docker缺失异常解决方法

GKE 1.24 containerd节点池Jenkins动态代理Testcontainers适配方案

问题现象

  • GKE升级Kubernetes 1.24版本后,默认运行时切换为containerd,正式移除dockershim支持
  • 集群内Jenkins通过Kubernetes插件动态创建Pod代理,原有配置通过挂载宿主机docker.sock、docker二进制的方式提供Docker访问能力
  • 代理切换到containerd节点后,Testcontainers启动失败,抛出DockerNotPresentException异常,提示Docker不存在
    原代理配置截图

异常日志如下:

java.lang.IllegalStateException: Failed to load ApplicationContext
  
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean 
with name 'dockerPresenceMarker' defined in class path resource 
[com/playtika/test/common/spring/DockerPresenceBootstrapConfiguration.class]: 
Bean instantiation via factory method failed; nested exception is 
org.springframework.beans.BeanInstantiationException: 
Failed to instantiate [com.playtika.test.common.spring.DockerPresenceMarker]: 
Factory method 'dockerPresenceMarker' threw exception; nested exception is 
com.playtika.test.common.spring.DockerNotPresentException: Docker must be present 
in order for testcontainers to work properly!

配置调整步骤

1. 更新Jenkins代理Pod的卷挂载配置

删除原有所有Docker相关的HostPath挂载项(包括/var/run/docker.sock、宿主机docker二进制路径等),新增以下containerd相关的HostPath挂载:

  • 宿主机路径/run/containerd/containerd.sock挂载到容器内同路径,类型为Socket
  • 宿主机路径/var/lib/containerd挂载到容器内同路径,类型为Directory
  • 宿主机路径/sys/fs/cgroup挂载到容器内同路径,类型为Directory,挂载传播设置为Bidirectional

2. 添加必要的环境变量

在代理Pod的容器配置中添加以下环境变量,指定Testcontainers对接containerd socket:

DOCKER_HOST=unix:///run/containerd/containerd.sock
TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/run/containerd/containerd.sock
TESTCONTAINERS_RYUK_CONTAINER_PRIVILEGED=true

前置要求:Testcontainers版本必须升级到1.17.0及以上,低版本不兼容containerd runtime。

3. 配置Pod安全上下文

给代理容器配置特权权限,保证可以正常调用containerd接口创建嵌套容器:

securityContext:
  privileged: true
  runAsUser: 0

4. 功能验证

代理Pod启动后直接运行测试任务即可,Testcontainers会通过containerd socket自动拉取镜像、创建测试容器,不会再抛出Docker不存在的异常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 22:09:20