---
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. 如需更新，提出建议并由人类确认

如果发现需要改进的地方，给出具体的更新方案（修改内容、位置、原因），由人类用户确认后再执行对命令文件的修改。

> **原则**：可改可不改的不改；只提出对执行质量有实质影响的更新建议。