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

如何指定Docker卷大小?Docker卷默认容量及配置报错排查

问题解答

1. Docker卷默认大小说明

Ubuntu 20.04上Docker 20.10默认使用overlay2存储驱动,这种场景下通过local驱动创建的普通命名卷(即你最初用-v jenkins_home:/var/jenkins_home创建的卷)没有独立的硬配额限制。这类卷默认存储在宿主机/var/lib/docker/volumes/路径下,实际可用空间等于该路径所在宿主机分区的剩余可用空间,不存在默认只分配几百兆的规则。
你遇到Jenkins提示388MB就即将占满的问题,大概率是宿主机上/var/lib/docker所在的系统分区本身剩余空间不足,不是Docker卷默认设置了过小的配额。

2. 现有docker-compose配置报错原因

你在driver_opts中添加o: "size=900m"的写法,仅适用于local驱动挂载独立块设备(比如单独磁盘分区、虚拟loop设备)的场景,这类场景必须同时指定device参数(即块设备的系统路径),直接给普通文件系统目录挂载加这个参数必然触发“缺少必填device选项”的报错。如果你不需要给卷设置固定硬配额,完全不需要添加这类driver_opts配置。

3. 大容量Jenkins存储卷的正确配置方案

你不需要tmpfs临时存储,要实现大容量持久化,选以下两种方案之一即可:

方案一:使用默认命名卷(最简便,推荐)

如果宿主机/var/lib/docker所在分区空间足够,直接删除compose文件中volumes.jenkins_home下的所有driver_opts配置即可,修改后的卷配置如下:

volumes:
  jenkins_home:

这种方式创建的卷没有空间上限,实际占用随Jenkins数据增长动态变化,只要宿主机对应分区有剩余空间就不会触发存储不足告警。如果/var/lib/docker所在分区空间过小,可以先修改Docker daemon配置,将数据根目录迁移到大容量磁盘分区,再启动容器即可。

方案二:绑定挂载宿主机大空间目录(适配单独数据盘场景)

如果你不想修改Docker默认数据路径,可以直接将宿主机上大容量分区下的目录绑定挂载到容器内,操作步骤如下:

  • 首先在宿主机大容量分区下创建Jenkins数据目录,并配置正确权限(Jenkins容器内运行服务的用户UID为1000,权限配置错误会导致启动失败):
    mkdir -p /data/jenkins_home
    chown -R 1000:1000 /data/jenkins_home
    
  • 修改docker-compose.yml的卷配置,删除原有的命名卷定义,直接绑定宿主机路径:
    services:
      jenkins:
        build:
          context: .
          dockerfile: ./Dockerfile
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - /data/jenkins_home:/var/jenkins_home
        ports:
          - 8082:8080
          - 50001:50000
    # 删除文件末尾原有的volumes顶层配置块
    

这种方式下Jenkins数据直接存在你指定的宿主机目录中,可用空间等于该目录所在分区的剩余空间,完全满足大容量存储需求。

补充说明

你提供的Dockerfile配置没有逻辑问题,内置安装Docker CLI的配置可以正常实现容器内操作宿主机Docker的需求,无需调整。如果配置完成后启动仍提示空间不足,可在宿主机执行df -h查看对应挂载路径所在分区的剩余空间,确认是否为分区本身空间不足导致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 02:30:54