docker ps -f 用法
时间: 2025-06-03 10:18:02 浏览: 9
### Docker `ps -f` 命令的用法
Docker 的 `ps` 命令用于列出系统中正在运行或已停止的容器。通过添加 `-f`(或 `--filter`)选项,用户可以基于特定条件过滤输出结果。以下是关于 `docker ps -f` 的语法和示例说明:
#### 语法
```bash
docker ps [OPTIONS] -f "filter=value"
```
- `filter=value` 是一个键值对,表示过滤条件。
- 支持的过滤器包括但不限于:`id`、`name`、`status`、`label`、`ancestor` 等。
#### 示例
1. **按容器状态过滤**
使用 `status` 过滤器可以筛选出处于特定状态的容器,例如运行中的容器:
```bash
docker ps -f "status=running"
```
或者筛选出已退出的容器:
```bash
docker ps -f "status=exited"
```
2. **按容器名称过滤**
使用 `name` 过滤器可以根据容器名称进行筛选。例如,查找名称包含 `mycontainer` 的容器:
```bash
docker ps -f "name=mycontainer"
```
3. **按镜像名称过滤**
使用 `ancestor` 过滤器可以根据容器所基于的镜像名称进行筛选。例如,查找基于 `nginx:latest` 镜像的所有容器:
```bash
docker ps -f "ancestor=nginx:latest"
```
4. **按标签过滤**
使用 `label` 过滤器可以根据容器的标签信息进行筛选。例如,查找带有 `env=production` 标签的容器:
```bash
docker ps -f "label=env=production"
```
5. **组合多个过滤条件**
可以同时使用多个过滤器。例如,查找名称包含 `web` 且处于运行状态的容器:
```bash
docker ps -f "name=web" -f "status=running"
```
#### 注意事项
- 如果需要查看所有容器(包括已停止的),需要添加 `-a` 参数:
```bash
docker ps -a -f "status=exited"
```
- 过滤器的键值对区分大小写[^1]。
### 示例代码
以下是一个简单的脚本,展示如何结合 `docker ps -f` 和其他命令批量操作容器:
```bash
#!/bin/bash
# 找到所有基于特定镜像的已停止容器并删除
IMAGE_NAME="mysql:5.7"
CONTAINERS=$(docker ps -a -f "ancestor=$IMAGE_NAME" -f "status=exited" -q)
if [ ! -z "$CONTAINERS" ]; then
docker rm $CONTAINERS
fi
```
阅读全文
相关推荐



















