mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2026-10-12 08:00:34 +00:00
2.1 KiB
2.1 KiB
批量清理未使用的容器网络
POST /api/v2/containers/network/clean,使用现有 1Panel 认证,不需要请求体。
这是异步接口,立即返回 data.taskID。实际结果在任务中心和任务日志查看,HTTP 请求结束不会取消任务。
规则:
- 永远保留
none、host、bridge、1panel-network。 - 保留所有容器(包括停止容器)引用的网络,删除前再通过 NetworkInspect 检查连接。
- 不检查 Compose 文件或应用配置引用;仅被这些配置引用、没有容器连接的普通网络也会被删除。
- 当前仅清理本地普通网络,跳过 Swarm、ingress 和 config-only 网络。
- Docker 删除时发现新连接会拒绝删除;不会强制断开容器。
成功响应示例:
{"code":200,"data":{"taskID":"服务端生成的任务 UUID"}}
任务类型为 Container,操作为 TaskClean。网络页“清理网络”按钮调用此接口,拿到 taskID 后立即打开任务日志,并刷新任务中心。 每个网络处理完成后写入名称、ID 和结果;有容器连接或 Docker 返回占用冲突时,明确记录“未删除”。最后记录已删除、跳过和失败数量。 跳过在用网络属于正常结果;检查/删除失败会将任务标记为失败,已删除的网络不回滚。
日志调用链:
agent/app/service/container_network_cleanup.go:NewTaskWithOps 创建任务,AddSubTask 注册清理步骤,Execute 执行任务,t.Log 写逐项日志。agent/app/task/task.go:任务持久化,维护状态,写入开始、结束标记;日志文件为<global.Dir.TaskDir>/Container/<taskID>.log。frontend/src/views/container/network/index.vue:请求成功后调用 openTaskLog(taskID)。frontend/src/components/log/task/index.vue:openWithTaskID 打开日志弹窗。frontend/src/components/log/file/index.vue:通过/logs/tasks/read按行读取任务日志。
范围:不检查 Compose 文件或应用配置引用;仅清理本地普通网络。原 /containers/prune 接口仍保持原逻辑。
测试使用假 Docker 客户端和临时任务数据库,不执行真实网络删除。