# docker network prune

## 描述

删除所有**未被任何容器使用**的网络。

此命令会清理那些用户创建但当前没有容器连接的网络（即“悬空”网络）。 **内置网络**（如 `bridge`、`host`、`none`）**永远不会被删除**。

## 用法

```bash
docker network prune [OPTIONS]
```

## 选项

\| 选项 | 默认值 | 描述 | | --- | | ---- | | `--filter` | 无 | 按条件过滤要删除的网络（例如 `until=1h`、`label=env=dev`） | | `-f`, `--force` | false | 跳过确认提示，直接执行删除 |

## 示例

### 1. 交互式清理未使用的网络

```bash
$ docker network prune
WARNING! This will remove all custom networks not used by at least one container.
Are you sure you want to continue? [y/N] y

Deleted Networks:
mynet1
mynet2
```

> ⚠️ 系统会提示确认。输入 `y` 才会执行删除。

### 2. 强制清理（无需确认）

```bash
$ docker network prune --force
Deleted Networks:
mynet1
mynet2
```

适用于自动化脚本。

### 3. 使用 `--filter` 按条件清理

#### 删除 **5 分钟前创建** 的未使用网络

```bash
$ docker network ls
NETWORK ID     NAME               DRIVER    SCOPE
7430df902d7a   bridge             bridge    local
ea92373fd499   foo-1-day-ago      bridge    local
ab53663ed3c7   foo-1-min-ago      bridge    local
97b91972bc3b   host               host      local
f949d337b1f5   none               null      local

$ docker network prune --force --filter "until=5m"

Deleted Networks:
foo-1-day-ago
```

> ✅ 注意：`foo-1-min-ago` 是 1 分钟前创建的，不满足 “5 分钟前” 条件，因此保留。

#### 支持的时间格式：

* **Unix 时间戳**：`1700000000`
* **RFC3339 / ISO8601**：`2025-11-18T10:00:00Z`
* **本地时间格式**：`2025-11-18T10:00`（使用守护进程所在主机的时区）
* **Go 风格持续时间**（相对当前时间）：
  * `10m` → 10 分钟前
  * `1h30m` → 1 小时 30 分钟前
  * `24h` → 24 小时前

#### 按标签过滤

```bash
# 删除带有标签 env=dev 且未使用的网络
$ docker network prune --filter "label=env=dev"

# 删除**没有**标签 owner 的未使用网络
$ docker network prune --filter "label!=owner"
```

> 🔹 `label=key` 或 `label=key=value`：仅删除**包含该标签**的网络 🔸 `label!=key` 或 `label!=key=value`：仅删除**不包含该标签**的网络

## 注意事项

* **只有用户自定义网络**（通过 `docker network create` 创建）才可能被删除。
* 如果某个网络仍有容器连接（即使容器已停止），它**不会被删除**。
* 此命令**不会影响正在运行的服务或数据**，但会移除网络配置。
* 在 Swarm 模式下，`prune` **不会删除作用域为 `swarm` 的 overlay 网络**，即使它们当前未被使用（因为 Swarm 可能稍后需要它们）。
