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

Ubuntu本地环境Spring Boot测试容器启动失败求助

解决Ubuntu 22.10下Spring Boot测试Docker容器启动失败(cgroups mountpoint不存在)问题

问题原因

Ubuntu 22.10默认启用cgroup v2,而Docker或你使用的容器测试库(比如Testcontainers)可能未适配好cgroup v2的配置,导致底层抛出cgroups: cgroup mountpoint does not exist: unknown错误,进而触发Spring Boot的ContainerLaunchException。

具体修复步骤

1. 调整Docker的cgroup驱动

编辑Docker配置文件/etc/docker/daemon.json(文件不存在则直接新建):

{
  "exec-opts": ["native.cgroupdriver=systemd"]
}

执行命令重启Docker服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

2. 切换到cgroup v1(若第一种方法无效)

修改GRUB启动参数强制使用cgroup v1:

  • 打开/etc/default/grub文件,找到GRUB_CMDLINE_LINUX_DEFAULT行,修改为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash systemd.unified_cgroup_hierarchy=0"
  • 更新GRUB配置:
sudo update-grub
  • 重启电脑使配置生效。

3. 检查Testcontainers配置(若依赖该库)

如果你的测试基于Testcontainers,可尝试显式指定Docker客户端,确保它能正确识别Docker环境:

@Container
public static PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>("postgres:14-alpine")
        .withDockerClient(DockerClientFactory.instance().client());

4. 验证cgroup挂载状态

执行以下命令查看cgroup挂载情况:

mount | grep cgroup

若为cgroup v2,会显示cgroup2 on /sys/fs/cgroup type cgroup2;若为v1,则会出现多个细分的cgroup目录,确认Docker能访问对应挂载点即可。

验证修复效果

重启Docker后重新运行Spring Boot测试,检查是否还出现ContainerLaunchException。若问题依旧,可查看Docker日志获取更多排查线索:

journalctl -u docker.service

内容的提问来源于stack exchange,提问作者mr nooby noob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 23:50:28