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

如何在不停止Docker的情况下清理占用空间的Docker卷?

解决方案

1. 清理Docker-in-Docker内部的资源

核心问题是内层Docker运行的容器占用了外层资源,必须先清理内部无用资源:

  • 获取TeamCity代理容器ID:
    docker ps | grep teamcity-agent
    
  • 进入代理容器内部:
    docker exec -it <container-id> sh
    
  • 在容器内执行内部Docker资源清理:
    # 清理所有无用镜像、容器、卷、网络
    docker system prune -af --volumes
    # 单独清理悬空卷(可选)
    docker volume prune -af
    # 查看内部磁盘使用情况确认效果
    docker system df
    

2. 排查外层Docker的悬空资源

内部清理后,外层可能残留未关联的悬空资源:

  • 列出外层Docker的悬空卷:
    docker volume ls -qf dangling=true
    
  • 确认无使用的悬空卷可直接删除:
    docker volume rm <volume-id>
    
  • 查看外层Docker磁盘使用情况:
    docker system df
    

3. 配置TeamCity代理自动清理

避免后续重复占满磁盘:

  • 在代理的buildAgent.properties文件中开启自动清理:
    teamcity.agent.auto.cleanup=true
    # 可选:限制保留的构建历史数量
    teamcity.agent.max.keep.builds=5
    
  • 在容器内添加定时清理任务(amazon-linux默认支持cronie):
    crontab -e
    # 添加每天凌晨2点清理内部资源的任务
    0 2 * * * /usr/bin/docker system prune -af --volumes > /dev/null 2>&1
    

4. 限制磁盘使用配额

从根源上防止磁盘溢出:

  • 启动代理容器时添加磁盘配额限制(需Docker支持overlay2配额,amazon-linux内核通常兼容):
    docker run -d --name teamcity-agent \
      --storage-opt size=20G \
      # 保留原有启动参数...
      jetbrains/teamcity-agent
    
  • 或给/var/lib/docker所在磁盘启用xfs配额:
    # 确认磁盘为xfs格式
    df -T /var/lib/docker
    # 修改/etc/fstab挂载参数启用配额,重启后设置目录配额
    xfs_quota -x -c 'limit bsoft=20G bhard=25G /var/lib/docker'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:35:28