# docker container prune

## 用法

```bash
docker container prune [OPTIONS]
```

## 选项

| 选项            | 默认值 | 描述                             |
| ------------- | --- | ------------------------------ |
| `--filter`    |     | 提供过滤条件（例如 `until=<timestamp>`） |
| `-f, --force` |     | 不提示确认                          |

## 示例

### 清理容器

```bash
$ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
4a7f7eebae0f63178aff7eb0aa39cd3f0627a203ab2df258c1a00b456cf20063
f98f9c2aa1eaf727e4ec9c0283bc7d4aa4762fbdba7f26191f26c97f64090360

Total reclaimed space: 212 B
```

### 过滤 (`--filter`)

过滤标志 (`--filter`) 的格式为 `"key=value"`。如果有多个过滤器，则传递多个标志（例如，`--filter "foo=bar" --filter "bif=baz"`）。

目前支持的过滤器有：

* **`until (<timestamp>)`**：仅删除在给定时间戳之前创建的容器。
* **`label`**：
  * `label=<key>` 或 `label=<key>=<value>`：仅删除带有指定标签的容器。
  * `label!=<key>` 或 `label!=<key>=<value>`：仅删除不带指定标签的容器。

`until` 过滤器可以使用 Unix 时间戳、日期格式化的时间戳，或相对于守护进程机器时间计算的 Go 持续时间字符串（例如 `10m`、`1h30m`）。 支持的日期格式化时间戳包括：RFC3339Nano、RFC3339、`2006-01-02T15:04:05`、`2006-01-02T15:04:05.999999999`、`2006-01-02T07:00` 和 `2006-01-02`。 如果时间戳末尾未提供 `Z` 或 `+-00:00` 时区偏移量，则使用守护进程的本地时区。 提供 Unix 时间戳时，请输入 `seconds[.nanoseconds]`，其中 `seconds` 是自 1970 年 1 月 1 日（UTC/GMT 午夜）以来经过的秒数（不计算闰秒）（即 Unix 纪元），可选的 `.nanoseconds` 字段是不超过九位数字的秒的小数部分。

`label` 过滤器接受两种格式：

* `label=...`（即 `label=<key>` 或 `label=<key>=<value>`）：删除带有指定标签的容器。
* `label!=...`（即 `label!=<key>` 或 `label!=<key>=<value>`）：删除不带指定标签的容器。

#### 示例：删除 5 分钟前创建的容器

```bash
$ docker ps -a --format 'table {{.ID}}\t{{.Image}}\t{{.Command}}\t{{.CreatedAt}}\t{{.Status}}'
CONTAINER ID   IMAGE     COMMAND   CREATED AT                STATUS
61b9efa71024   busybox   "sh"      2017-01-04 13:23:33 PST   Exited (0) 41 seconds ago
53a9bc23a516   busybox   "sh"      2017-01-04 13:11:59 PST   Exited (0) 12 minutes ago

$ docker container prune --force --filter "until=5m"
Deleted Containers:
53a9bc23a5168b6caa2bfbefddf1b30f93c7ad57f3dec271fd32707497cb9369

Total reclaimed space: 25 B

$ docker ps -a --format 'table {{.ID}}\t{{.Image}}\t{{.Command}}\t{{.CreatedAt}}\t{{.Status}}'
CONTAINER ID   IMAGE     COMMAND   CREATED AT                STATUS
61b9efa71024   busybox   "sh"      2017-01-04 13:23:33 PST   Exited (0) 44 seconds ago
```

#### 示例：删除在 `2017-01-04T13:10:00` 之前创建的容器

```bash
$ docker ps -a --format 'table {{.ID}}\t{{.Image}}\t{{.Command}}\t{{.CreatedAt}}\t{{.Status}}'
CONTAINER ID   IMAGE     COMMAND   CREATED AT                STATUS
53a9bc23a516   busybox   "sh"      2017-01-04 13:11:59 PST   Exited (0) 7 minutes ago
4a75091a6d61   busybox   "sh"      2017-01-04 13:09:53 PST   Exited (0) 9 minutes ago

$ docker container prune --force --filter "until=2017-01-04T13:10:00"
Deleted Containers:
4a75091a6d618526fcd8b33ccd6e5928ca2a64415466f768a6180004b0c72c6c

Total reclaimed space: 27 B

$ docker ps -a --format 'table {{.ID}}\t{{.Image}}\t{{.Command}}\t{{.CreatedAt}}\t{{.Status}}'
CONTAINER ID   IMAGE     COMMAND   CREATED AT                STATUS
53a9bc23a516   busybox   "sh"      2017-01-04 13:11:59 PST   Exited (0) 9 minutes ago
```
