--- name: Docker清理 description: 清理 Docker 镜像构建临时文件和悬空资源 --- ## 用户输入 ```text $ARGUMENTS ``` 执行前**必须**处理用户输入(非空时) ## 参数说明 支持以下参数(可组合使用): - `cache` - 仅清理构建缓存 - `images` - 仅清理悬空镜像 - `volumes` - 仅清理未使用的卷 - `containers` - 额外清理已停止的容器 - `all` - 清理默认项目(构建缓存、悬空镜像、未使用的卷) - `detail` 或 `详细` - 显示详细清理过程 ## 输出 ### 格式要求 按以下格式输出清理结果: ```markdown ## Docker 清理报告 ### 清理前状态 | 类型 | 总量 | 活跃 | 占用空间 | 可回收 | |------|------|------|----------|--------| | **镜像** | {数量} | {数量} | {大小} | {大小} ({百分比}%) | | **容器** | {数量} | {数量} | {大小} | {大小} ({百分比}%) | | **本地卷** | {数量} | {数量} | {大小} | {大小} ({百分比}%) | | **构建缓存** | {数量} | {数量} | {大小} | {大小} | ### 清理内容 执行以下清理: - **构建缓存**:{清理的缓存大小} - **悬空镜像**:{删除的镜像数量} 个 - **未使用的卷**:{清理的卷大小} {如果用户指定了 `containers` 参数,则添加: - **已停止的容器**:{删除的容器数量} 个 } ### 清理后状态 | 类型 | 总量 | 活跃 | 占用空间 | 可回收 | |------|------|------|----------|--------| | **镜像** | {数量} | {数量} | {大小} | {大小} ({百分比}%) | | **容器** | {数量} | {数量} | {大小} | {大小} ({百分比}%) | | **本地卷** | {数量} | {数量} | {大小} | {大小} ({百分比}%) | | **构建缓存** | {数量} | {数量} | {大小} | {大小} | ### 清理总结 **释放空间总计:约 {总大小}** {根据清理结果给出建议} ``` ### 执行规则 1. **默认行为** - 无参数时,仅清理构建缓存(不清理悬空镜像、未使用的卷、容器) 2. **选择性清理** - 根据 $ARGUMENTS 中的参数执行对应清理 3. **容器清理** - 仅当用户明确指定 `containers` 参数时才清理已停止的容器 4. **详细模式** - 当 $ARGUMENTS 包含 "detail" 或 "详细" 时,显示详细的清理过程 5. **安全检查** - 清理前先检查 Docker 状态,确认可清理内容 6. **执行顺序** - 按以下顺序执行: - 检查当前状态(`docker system df`) - 清理构建缓存(`docker builder prune -a -f`) - {如果指定了 `images` 参数} 清理悬空镜像(`docker image prune -f`) - {如果指定了 `volumes` 参数} 清理未使用的卷(`docker volume prune -f`) - {如果指定了 `containers` 参数} 清理已停止的容器(`docker container prune -f`) - 显示清理后状态 ### 清理命令参考 ```bash # 检查磁盘使用情况 docker system df # 清理构建缓存(默认执行) docker builder prune -a -f # 清理悬空镜像(需要明确指定) docker image prune -f # 清理未使用的卷(需要明确指定) docker volume prune -f # 清理已停止的容器(需要明确指定) docker container prune -f # 一次性清理所有未使用资源(包括容器,不推荐使用) docker system prune -a -f --volumes ``` ### 注意事项 - **默认不清理容器**:已停止的容器不会在默认清理中删除,需明确指定 `containers` 参数 - 构建缓存清理后重新构建镜像会需要更多时间 - 删除的镜像和卷无法恢复,请谨慎操作 - 建议定期清理以保持系统整洁 - 显示可回收空间不代表实际释放空间,可能因层共享而不同 ## 执行后复盘 每次执行本命令后,必须完成以下步骤: ### 1. 分析执行过程 分析本次执行过程的优点和缺点: - **优点**:哪些步骤/设计执行顺畅、达到预期效果? - **缺点**:哪些步骤/设计存在问题或可改进之处? ### 2. 评估是否需要更新命令 基于上述分析,判断当前命令是否需要更新。如果执行顺利无问题,注明"当前命令无需更新"。 ### 3. 如需更新,提出建议并由人类确认 如果发现需要改进的地方,给出具体的更新方案(修改内容、位置、原因),由人类用户确认后再执行对命令文件的修改。 > **原则**:可改可不改的不改;只提出对执行质量有实质影响的更新建议。