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

GCP Batch使用Docker镜像启动时出现磁盘空间不足错误

解决GCP Batch容器启动磁盘空间不足问题

错误详情

{
  "textPayload": "docker: Error response from daemon: mkdir /var/lib/docker/overlay2/8000fd83d3d88faf613413bc2bf93c89664bfc45daf4e0f3783e4a754f02a27f-init: no space left on device.\nSee 'docker run --help'.\n",
  "insertId": "10wsnp3f2rht1y",
  "resource": {
    "type": "generic_task",
    "labels": {
      "task_id": "task/j-9b13c8c6-9371-4d43-b000-ce596b1bcac0-group0-3634/0/0",
      "job": "j-9b13c8c6-9371-4d43-b000-ce596b1bcac0",
      "project_id": "ml-experiments-379111",
      "namespace": "",
      "location": "europe-west6-c"
    }
  },
  "timestamp": "2023-03-02T20:23:35.566591749Z",
  "severity": "ERROR",
  "labels": {
    "hostname": "j-9b13c8c6-9371-4d43-b000-ce596b1bcac0-group0-0-2ss2",
    "job_uid": "j-9b13c8c6-9371-4d43-b000-ce596b1bcac0",
    "task_group_name": "projects/486015383666/locations/europe-west6/jobs/cpuart-real-50000-60000/taskGroups/group0"
  },
  "logName": "projects/ml-experiments-379111/logs/batch_task_logs",
  "receiveTimestamp": "2023-03-02T20:23:35.587286849Z"
}

解决思路

  • 增大实例系统盘容量
    GCP Batch默认实例系统盘容量偏小(通常10GB),Docker运行时的overlay2目录会占用大量空间。在任务组配置中指定更大的磁盘容量,例如:

    taskGroups:
    - taskCount: 100
      template:
        instanceTemplate:
          machineType: n1-standard-1
          bootDisk:
            type: pd-standard
            sizeGb: 30
    
  • 添加任务预处理清理步骤
    在任务启动前执行清理脚本,释放Docker缓存和临时文件,避免磁盘累积。在任务定义中添加预处理命令:

    tasks:
    - runnables:
      - script:
          text: |
            # 清理Docker缓存
            docker system prune -af
            # 清理/tmp目录
            rm -rf /tmp/*
      - container:
          imageUri: your-image-uri
    
  • 优化容器镜像体积
    使用多阶段构建减小镜像大小,移除镜像内的冗余文件(如apt/yum缓存、构建临时文件),减少Docker创建overlay层时的磁盘占用。例如多阶段构建示例:

    # 构建阶段
    FROM golang:1.20 AS builder
    WORKDIR /app
    COPY . .
    RUN go build -o app .
    
    # 运行阶段
    FROM alpine:latest
    WORKDIR /app
    COPY --from=builder /app/app .
    RUN rm -rf /var/cache/apk/*
    CMD ["./app"]
    
  • 限制实例复用次数
    配置任务组的maxTasksPerInstance参数,让实例运行指定数量的任务后自动销毁重建,避免多次任务运行后磁盘被占满:

    taskGroups:
    - taskCount: 100
      maxTasksPerInstance: 5
      template:
        # 实例配置...
    
  • 挂载临时磁盘到Docker存储目录
    创建附加临时磁盘并挂载到/var/lib/docker,将Docker的存储转移到临时磁盘,不占用系统盘空间:

    taskGroups:
    - taskCount: 100
      template:
        instanceTemplate:
          machineType: n1-standard-1
          disks:
          - boot: true
            type: pd-standard
            sizeGb: 10
          - type: pd-standard
            sizeGb: 50
            mountPath: /var/lib/docker
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 22:02:07