docker ps -a --filter 命令在 Docker 容器列表中根据特定条件进行过滤时非常实用。这是一个强大的功能,可以在容器较多的环境中快速找到所需的容器。

接下来将介绍主要的过滤选项及其实际应用案例。


基本格式



docker ps -a --filter <过滤名称>=<过滤值>

可以同时使用多个过滤器,这种情况下将使用多个 --filter 选项。


🔍 主要过滤选项和应用案例

1. 按状态(status)过滤

按容器的状态进行过滤。

状态选项 说明
created 已创建但尚未启动的容器
restarting 不断重启的容器
running 当前正在运行的容器
paused 已暂停的容器
exited 已退出的容器

示例:仅查看正在运行的容器

docker ps -a --filter status=running

示例:仅查看已退出的容器

docker ps -a --filter status=exited

2. 按容器名称(name)过滤

用于查找包含特定名称的容器。

示例:仅查看名称包含“web”的容器

docker ps -a --filter name=web
  • 结果示例:
CONTAINER ID   IMAGE           COMMAND     CREATED         STATUS         NAMES 
f1c2d3e4f5     nginx:latest    "/start"    2 days ago      Up 2 days      my-web-container

3. 按使用的镜像(image)过滤

用于轻松查找使用特定镜像的容器。

示例:查看使用 nginx 镜像的容器

docker ps -a --filter ancestor=nginx
  • 结果示例:
CONTAINER ID   IMAGE          COMMAND          STATUS        NAMES
a1b2c3d4e5     nginx:latest   "/start"         Up 3 hours    nginx-server-1
f6g7h8i9j0     nginx:alpine   "/start"         Exited        nginx-temp

4. 按卷(volume)过滤

用于查找挂载特定卷的容器。

示例:查看使用 my_volume 卷的容器

docker ps -a --filter volume=my_volume
  • 结果示例:
CONTAINER ID   IMAGE          COMMAND           STATUS         NAMES
1a2b3c4d5e     postgres       "docker-entry"    Up 2 days      postgres_db

5. 按标签(label)过滤

在管理容器时,使用标签非常方便,如 Docker Compose 或 Kubernetes。

示例:查看带有“env=production”标签的容器

docker ps -a --filter label=env=production

  • 结果示例:
CONTAINER ID   IMAGE           COMMAND         STATUS          NAMES 
abcdef12345    myapp:latest    "/run-app"      Up 3 days       myapp-production

6. 按网络(network)过滤

用于查看连接到特定网络的容器列表。

示例:查看连接到特定网络的容器

docker ps -a --filter network=my_network

  • 结果示例:
CONTAINER ID   IMAGE          COMMAND          STATUS         NAMES 
123abc456de    redis          "/start"         Up 1 day       redis-cache 
456def789gh    postgres       "/start"         Up 1 day       postgres-db

7. 按 ID 过滤

用于快速查找特定容器 ID。(通常只需输入 ID 的前部分即可。)

示例:查看以 1234 开头的容器

docker ps -a --filter id=1234

💡 使用多个过滤器组合



可以组合多个过滤器。

示例:查找名称中包含“web”的,状态为“running”的,以及使用“nginx”镜像的容器

docker ps -a --filter name=web --filter status=running --filter ancestor=nginx

🛠️ 实用的应用案例

  • 停止特定项目的所有容器:
docker stop $(docker ps -a -q --filter name=my_project)****
  • 删除旧的已退出容器:
docker rm $(docker ps -a -q --filter status=exited)
  • 清理不必要的临时容器:
docker rm $(docker ps -a -q --filter ancestor=temp_image)

因此,docker ps -a --filter 命令在容器增多时能够根据所需条件快速过滤和管理,非常实用且强大。请积极尝试并利用它!