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

Github Action运行空间不足,Docker容器内如何清理主机冗余工具?

解决Docker容器中Github Action主机空间不足的问题

核心问题说明

当你在Job中指定container字段后,默认所有步骤都会在容器内执行,没有直接操作主机的权限。但可以通过以下几种方式解决空间不足:


方案1:在单个步骤中切换到主机环境执行清理

在需要清理主机的步骤中添加container: false,让该步骤直接在主机(ubuntu-latest)上运行,执行清理命令:

jobs:
  compile:
    name: Run Sonarqube
    runs-on: ubuntu-latest
    container:
      image: my_image:latest
    steps:
    - name: Clean up host machine
      container: false  # 该步骤在主机环境执行
      run: |
        # 卸载主机上的无用残留包
        sudo apt-get remove -y --purge $(dpkg -l | grep '^rc' | awk '{print $2}')
        sudo apt-get autoremove -y
        sudo apt-get clean
        # 深度清理Docker缓存(镜像、容器、卷等)
        docker system prune -af --volumes
    - name: Checkout code
      uses: actions/checkout@v3
      with:
        # 你的配置内容

方案2:优化你的Docker镜像体积

从根源减少容器占用的空间,在Dockerfile中添加清理步骤:

  • 使用多阶段构建,只保留运行时需要的文件
  • 安装依赖后立即清理包管理工具的缓存
  • 删除镜像中不必要的工具、日志和临时文件

示例Dockerfile片段:

# 构建阶段
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install && npm cache clean --force

# 运行阶段
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY . .
# 清理系统缓存
RUN apk add --no-cache tzdata && rm -rf /var/cache/apk/*

方案3:清理容器内的临时文件和缓存

如果空间不足是容器内部导致的,在容器内的步骤中添加清理命令:

- name: Clean up container cache
  run: |
    # 清理npm/yarn缓存
    npm cache clean --force
    # 删除容器内的临时文件
    rm -rf /tmp/*
    # 清空系统日志文件
    truncate -s 0 /var/log/*.log

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:43:12