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

Amazon Linux 2023上Jenkins构建Docker镜像报磁盘空间不足求助

解决多平台Docker镜像构建"no space left on device"问题的排查方案

1. 检查inode使用情况

空间充足却报空间不足,优先排查inode是否耗尽:

df -i

若某个分区inode使用率达100%,清理该分区下的大量小文件(比如Docker构建残留的临时碎片、Jenkins工作目录的旧构建缓存)。

2. 调整Docker Buildx的临时存储路径

多平台构建依赖Buildx,默认临时文件可能存于/tmp(多为tmpfs,空间有限),可手动指定存储目录到EBS卷:

  • 创建自定义Buildx构建器:
docker buildx create --use --name custom_builder --buildkitd-flags "--root /path/to/your/ebs/docker/buildkit"
  • 构建时指定临时目录大小:
docker buildx build --tmpfs /tmp:rw,size=10G ...

3. 扩展loop设备配额

Amazon Linux 2023中Docker构建可能用到loop设备,系统默认配额有限。先查看当前使用情况:

losetup -a

若接近上限,增加loop设备数量:

echo "options loop max_loop=64" >> /etc/modprobe.d/loop.conf
modprobe loop

4. 清理Jenkins工作目录冗余文件

非容器化Jenkins的工作目录(默认/var/lib/jenkins/workspace)可能堆积大量旧构建临时文件:

  • 在Jenkins任务配置中开启"Discard old builds",设置保留的构建数量和天数;
  • 手动清理常见缓存目录:
rm -rf /var/lib/jenkins/workspace/*/*/target /var/lib/jenkins/workspace/*/*/.gradle

5. 调整Docker的tmpfs配置

Docker默认给容器挂载的tmpfs空间不足时,修改/etc/docker/daemon.json:

{
  "default-ulimits": {
    "nofile": {
      "name": "nofile",
      "hard": 65536,
      "soft": 65536
    }
  },
  "tmpfs": "/tmp:rw,exec,size=20G"
}

重启Docker服务生效:

systemctl restart docker

6. 排查SELinux上下文问题

Amazon Linux 2023默认开启SELinux,可能导致Docker无法写入指定的EBS目录。临时关闭测试:

setenforce 0

若问题解决,为Docker根目录设置正确的SELinux上下文:

chcon -Rt svirt_sandbox_file_t /path/to/your/ebs/docker

7. 限制构建并发避免资源冲突

两个任务时而成功时而失败,大概率是并发构建抢占了有限临时资源:

  • 在Jenkins全局或任务配置中关闭"Execute concurrent builds if necessary";
  • 为每个构建任务分配独立的临时目录,避免资源竞争。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:59:51